{"version":3,"sources":["components/white-logotype-transparent.png","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/api-authorization/LoginMenu.js","components/NavMenu.js","components/Layout.js","components/Home.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/Program.jsx","components/Application.jsx","components/TabComponents/RowComponents/WidgetComponents/ProjectTypes.jsx","components/TabComponents/RowComponents/WidgetComponents/StrategicInitiatives.jsx","components/TabComponents/RowComponents/ProjectRow.jsx","components/TabComponents/RowComponents/MilestoneRow.jsx","components/TabComponents/Milestones.jsx","components/Dropzone.js","components/Progress.js","components/Upload.js","components/TabComponents/RowComponents/WidgetComponents/DocumentTypes.jsx","components/TabComponents/RowComponents/DocumentRow.jsx","components/TabComponents/Documents.jsx","components/TabComponents/DescBenCost.jsx","components/TabComponents/CompEfforts.jsx","components/TabComponents/RowComponents/FundingRow.jsx","components/TabComponents/Funding.jsx","components/TabComponents/RowComponents/PriorAppRow.jsx","components/TabComponents/PriorApp.jsx","components/TabComponents/SubmitApplication.jsx","components/ApplicationPicker.jsx","components/Tabs.js","components/Cooperator.js","App.js","index.js"],"names":["module","exports","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","Tabs","PasswordReset","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","state","signinSilent","createArguments","silentUser","updateState","success","console","log","Error","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","length","splice","i","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","LoginMenu","props","isAuthenticated","userName","userId","_subscription","subscribe","populateState","unsubscribe","Promise","all","setState","name","sub","profilePath","logoutPath","pathname","local","authenticatedView","registerPath","loginPath","anonymousView","applications","color","fontWeight","float","className","NavLink","style","to","id","data-toggle","aria-haspopup","aria-expanded","cursor","aria-labelledby","tag","Link","NavItem","Component","NavMenu","toggleNavbar","bind","collapsed","wrapSpaceOnly","whiteSpace","noWrap","current","window","location","href","backgroundColor","borderColor","Container","src","img","width","alt","marginLeft","type","data-target","aria-controls","aria-label","search","displayName","Layout","children","Home","align","target","rel","action","login","getReturnUrl","processLoginCallback","URLSearchParams","get","redirectToProfile","redirectToRegister","returnUrl","signIn","result","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","encodeURI","apiAuthorizationPath","redirectUrl","replace","Logout","isReady","authenticated","history","logout","processLogoutCallback","populateAuthenticationState","signOut","completeSignOut","ApiAuthorizationRoutes","path","render","loginAction","logoutAction","Program","isChecked","toggleCheckboxChange","handleCheckboxChange","label","value","margin","onChange","checked","disabled","closed","Application","programs","cooperators","counties","programsDisplay","appId","dataSavedSuccessfully","saveStatusMessage","applicationFiscalYearId","errors","ProjectName","NewProject","CooperatorId","ContactName","ContactAddress","ContactCity","ContactState","ContactZip","ContactPhone","ContactFax","ContactEmail","Programs","Counties","componentDidMount","selectPrograms","Set","then","populateApplication","catch","getCooperators","getPrograms","toggleCheckbox","has","delete","add","checkbox","handleOptionChange","changeEvent","selectedOption","appNext","e","preventDefault","ApplicationFiscalYearId","IsNewProjectFlg","ContactExtension","ComplementaryEfforts","DateSubmitted","ApplicationStatusId","CooperatorName","ApplicationCustom3","ApplicationCustom4","ApplicationCustom5","LastUpdateUserId","LastUpdateDate","Date","AspNetUserId","fy","appNumber","applicationId","getFullYear","projectName","cfiProjectName","isNewProjectFlg","availablePrograms","countiesBenefited","cooperatorId","Number","contactName","contactAddress","contactCity","contactState","contactZip","contactPhone","getPhoneValue","toString","contactExtension","applicationStatusId","contactEmail","aspNetUserId","handleValidation","method","headers","body","JSON","stringify","handleAppId","setTab","handleChange","handleCooperatorChange","handleCountyChange","countyArr","split","fld","document","getElementById","options","includes","selected","prevProps","getApplication","programsFromApi","program","availableProgramId","display","description","cooperatorsFromApi","cooperator","cooperatorName","setAppId","val","parseInt","statusMessage","formIsValid","test","phone","onSubmit","htmlFor","required","maxLength","multiple","data-style","data-width","title","key","hidden","pattern","displayType","format","mask","onValueChange","values","onClick","ProjectTypes","_isMounted","projects","projectsFromApi","project","projectTypeId","projectsList","alert","onProjectChange","StrategicInitiatives","strats","stratsFromApi","r","relatedProjectTypeId","strat","strategicInitiativeId","onStrategicChange","stratsList","ProjectRow","handleProjectChange","handleStrategicChange","strategic","projectErrors","strategicErrors","rowId","row","applicationProjectTypeId","onRowChange","date","getTime","isValid","showErrors","showDelete","removeRow","MilestoneRow","timeline","milestone","duedate","milestoneErrors","duedateErrors","applicationMilestoneId","timelineText","milestoneText","dueDate","substr","year","max","min","Milestones","projectrows","milestonerows","projectrowsData","milestonerowsData","areProjectsValid","areMilestonesValid","saveErrors","Project","Milestone","loading","handleProjectRowInputChange","ii","field","handleMilestoneRowInputChange","appendProjectRow","appendMilestoneRow","handleRemoveProject","deleteProject","handleRemoveMilestone","deleteMilestone","handleProjectValidation","handleMilestoneValidation","isFormValid","prs","pr","ApplicationProjectTypeId","err","mss","ms","ApplicationMilestoneId","populateProjectRows","populateMilestoneRows","entry","forEach","mrow","prow","rowData","DueDate","MilestoneText","ProjectTypeId","StrategicInitiativeId","colSpan","setMinMilestoneDate","rowCount","Dropzone","hightlight","fileInputRef","React","createRef","openFileDialog","onFilesAdded","onDragOver","onDragLeave","onDrop","click","evt","files","array","fileListToArray","list","item","event","dataTransfer","maxsize","ref","Progress","progress","Upload","handleDocumentTypeChange","filesdocumenttypes","clearFiles","successfullUploaded","errorMessage","uploadFiles","documentCountMessage","uploadProgress","uploading","validDocument","file","size","sendRequest","validFileTypes","renderActions","markedfiles","markedfile","prevState","concat","fileType","percentage","opacity","fd","FormData","append","uploadappid","statusCode","rowid","renderProgress","allowedFileType","decimalScale","removeFile","DocumentTypes","documenttypes","documentTypesFromApi","documentype","documentTypeId","withRowId","documentTypesList","documenttype","onDocumentTypeChange","DocumentRow","locationLink","documentErrors","applicationDocumentId","documentName","documentId","locationlink","Documents","getDocuments","handleDocumentRowChange","documentrowsData","handleRemoveDocument","documentrows","deleteDocument","handleDocumentValidation","docs","doc","appid","areDocumentsValid","DocumentTypeMapExists","DocumentTypeFundingExists","DocumentTypeRankingExists","DocumentTypeSelected","DocumentTypeMap","DocumentTypeFunding","DocumentTypeRanking","populateDocumentRows","documentrow","docIsValid","onFilesUploaded","handleFilesUploaded","DescBenCost","descriptionCharCount","benefitCharCount","costCharCount","benefit","cost","ApplicationId","ProjectDescription","Benefit","Cost","populateInfo","projectDescription","shrinkCharCount","fontSize","rows","CompEfforts","effort","effortCharCount","complementaryEfforts","FundingRow","updateTotal","FundingSource","PriorFunding","CurrentFunding","CurrentPlusOneFunding","FutureFunding","RowTotalFunding","FundingSourceErrors","PriorFundingErrors","CurrentFundingErrors","CurrentPlusOneFundingErrors","FutureFundingErrors","fundingSource","priorFunding","currentFunding","currentPlusOneFunding","futureFunding","trim","prior","plus","future","multiline","defaultValue","thousandSeparator","onBlur","Funding","handleRowInputChange","rowsData","handleFundingValidation","areAdditionsValid","appendRow","handleRowDelete","mainfund","ApplicationMainFundingId","ASPriorFunding","getValue","ASCurrentFunding","ASCurrentPlusOneFunding","ASFutureFunding","DSPriorFunding","DSCurrentFunding","DSCurrentPlusOneFunding","DSFutureFunding","ApplicationMainFundingCustom1","ApplicationMainFundingCustom2","ApplicationMainFundingCustom3","ApplicationMainFundingCustom4","ApplicationMainFundingCustom5","additionalfunding","areMainFundsValid","areAddFundsValid","handleAddFundValidation","af","addfund","ApplicationAdditionalFundingId","toLocaleString","ApplicationAdditionalFundingCustom1","ApplicationAdditionalFundingCustom2","ApplicationAdditionalFundingCustom3","ApplicationAdditionalFundingCustom4","ApplicationAdditionalFundingCustom5","ASRowTotalFunding","DSRowTotalFunding","PriorFundingTotal","CurrentFundingTotal","CurrentPlusOneFundingTotal","FutureFundingTotal","errorsAddFunding","FY","populateFunding","funding","asPriorFunding","asCurrentFunding","asCurrentPlusOneFunding","asFutureFunding","dsPriorFunding","dsCurrentFunding","dsCurrentPlusOneFunding","dsFutureFunding","applicationMainFundingId","queryFundingRows","populateFundingRows","applicationAdditionalFundingId","parsed","isNaN","asprior","ascurrent","asplus","asfuture","dsprior","dscurrent","dsplus","dsfuture","isNumericString","PriorAppRow","printApplication","priorAppId","open","priorFY","priorAppProject","priorAppStatus","priorAppErrors","applicationStatusDescription","PriorApp","getPriorApps","priorapprows","priorapprowsData","populatePriorAppRows","application","SubmitApplication","chkContractTemplate","dateApplicationSubmitted","applicationSubmitted","alreadySubmittedStatus","applicationMainFunding","applicationAdditionalFunding","applicationMilestones","applicationDocuments","applicationData","errorRows","selectedDigitalSigOption","ContractTermsReadErrors","DigitalSignatureErrors","applicationErrors","toggleContractChange","handleDigitalSigOptionChange","withdrawApplication","DigitalSignatureFlg","updateDigitalSignature","ex","validateApplication","getApplicationSubmittal","digitalSignatureFlg","dateSubmitted","dt","toDateString","toLocaleTimeString","populateResult","Spinner","ApplicationPicker","selectedAppId","token","selectedAppIdFY","applicationFYId","handleAppSelectionChange","getApplications","applicationsfromApi","applicationsList","onApplicationChange","handleClick","activetab","handleSetAppId","handleDisplayMessage","handleTabbing","lasttab","applicationOpenDateDisplay","applicationOpenDate","applicationCloseDateDisplay","applicationCloseDate","isPastApplicationCloseDate","UserId","applicationFiscalYear","priorYearApp","showPopout","applicationClass","projtypeClass","dbcClass","compeffClass","fundClass","docsClass","submitClass","priorYearClass","tabs","selectedId","tabsUserid","close","Token","handleApplicationChange","role","priorYear","aria-selected","tab","marginBottom","Cooperator","getCoopApps","coopapprows","coopapprowsData","populateCoopAppRows","alignSelf","App","referrer","exact","component","baseUrl","getElementsByTagName","getAttribute","rootElement","ReactDOM","basename"],"mappings":"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","file":"static/js/main.a99a0ecf.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/white-logotype-transparent.1ac90fe8.png\";","export const ApplicationName = 'CFIReactUserRegistration';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register',\r\n Tabs: 'tabs'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `./_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Account/Register',\r\n //{/* IdentityManagePath: '/Identity/Account/Manage',*/ }\r\n IdentityManagePath: '/',\r\n Tabs: '../Tabs',\r\n PasswordReset: '/Identity/Account/ForgotPassword'\r\n};\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React, { Component, Fragment } from 'react';\r\nimport { NavItem, NavLink } from 'reactstrap';\r\n//import NavDropdown from 'react-bootstrap/NavDropdown';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './AuthorizeService';\r\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport '../NavMenu.css';\r\n\r\nexport class LoginMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n userName: null,\r\n userId: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n this.populateState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\r\n this.setState({\r\n isAuthenticated,\r\n userName: user && user.name,\r\n userId: user && user.sub\r\n });\r\n }\r\n\r\n render() { \r\n const { isAuthenticated, userName, userId } = this.state;\r\n\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n //const tabsPath = { pathname: `${ApplicationPaths.Tabs}`, state: { local: true } };\r\n return this.authenticatedView(userName, profilePath, logoutPath, userId);\r\n }\r\n }\r\n\r\n authenticatedView(userName, profilePath, logoutPath, userId) {\r\n \r\n const applications = { color: 'white', fontWeight: 'bold', float: 'left' }\r\n //const logout = { color: 'white', fontWeight: 'bold' }\r\n const pointer = { cursor: 'pointer' }\r\n\r\n return (\r\n \r\n
\r\n \r\n Applications\r\n \r\n
    \r\n \r\n My Applications\r\n \r\n \r\n Cooperator Applications\r\n \r\n
\r\n
\r\n\r\n {/**/}\r\n {/* Logged in: {userName}*/}\r\n {/**/}\r\n \r\n \r\n Logout\r\n \r\n
\r\n );\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n\r\n const applications = { color: 'white' }\r\n\r\n return (\r\n \r\n Register\r\n \r\n \r\n Login\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { LoginMenu } from './api-authorization/LoginMenu';\r\nimport './NavMenu.css';\r\n//import img from './SWFWMDLogo.png';\r\nimport img from './white-logotype-transparent.png'; \r\n\r\nexport class NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true\r\n };\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n render() { \r\n //console.log(\"***In NavMenu.js***\");\r\n //console.log(current);\r\n //console.log(current.search(\"/authentication/logged-out\"));\r\n\r\n const wrapSpaceOnly = {\r\n color: 'white',\r\n fontWeight: 'bold',\r\n whiteSpace: 'nowrap'\r\n }\r\n const noWrap = { whiteSpace: 'nowrap' }\r\n const current = window.location.href;\r\n const menuBuffer = { marginLeft: '25%' }\r\n const titleBuffer = { marginLeft: '10%' }\r\n const lessBuffer = { marginLeft: '15%' }\r\n const nav = {\r\n backgroundColor: '#0079c2',\r\n borderColor: '#000012',\r\n color: 'white'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from './NavMenu';\r\n//import { Footer } from './Footer';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render() {\r\n\r\n return (\r\n
\r\n \r\n \r\n {this.props.children}\r\n \r\n {/*
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants';\r\n\r\nexport class Home extends Component {\r\n static displayName = Home.name;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n userName: null,\r\n userId: null\r\n };\r\n }\r\n\r\n render() {\r\n //console.log(\"***In Home.js***\");\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n\r\n return (\r\n
\r\n
\r\n

Welcome to the new Cooperative Funding Initiative Application

\r\n
\r\n
\r\n
\r\n
Login and Registration
\r\n
\r\n
\r\n If you are already registered, click here to log in.\r\n

\r\n Have you forgotten your password? Click here, then click on the Forgot your Password? link, then follow the prompts to reset your password. \r\n

\r\n\r\n Start the registration process here, where you will be required to enter your e-mail address, and choose a password.\r\n

\r\n After you are logged in, you can create a new application or edit an existing application by clicking on \"My Applications\" above. \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Need help?
\r\n
\r\n

\r\n Project specific information can be found in the CFI Guidelines.\r\n

\r\n

Application data entry procedures can be found in the CFI Applicant Guide.

\r\n
\r\n
\r\n
\r\n
Contact Us
\r\n
\r\n

Email: CFI@swfwmd.state.fl.us

\r\n \t Phone: (352) 796-7211 ext. 4008 or < br />\r\n\t\t 1-800-423-1476(Florida only) ext. 4008\r\n
\r\n
\r\n
\r\n

Browser Compatibility: Chrome, Edge

\r\n

**NOTE: The Internet Explorer browser is not supported

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (
Processing login
);\r\n case LoginActions.LoginCallback:\r\n return (
Processing login callback
);\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl());\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n }\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You haven been logged out of the Cooperative Funding Initiative system.\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state;\r\n if (!isReady) {\r\n return
\r\n }\r\n if (!!message) {\r\n return (
{message}
);\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (
Logging out
);\r\n case LogoutActions.LogoutCallback:\r\n return (
Logging out
);\r\n case LogoutActions.LoggedOut:\r\n return (
{message}
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Login } from './Login'\r\nimport { Logout } from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render () {\r\n return(\r\n \r\n loginAction(LoginActions.Login)} />\r\n loginAction(LoginActions.LoginFailed)} />\r\n loginAction(LoginActions.LoginCallback)} />\r\n loginAction(LoginActions.Profile)} />\r\n loginAction(LoginActions.Register)} />\r\n logoutAction(LogoutActions.Logout)} />\r\n logoutAction(LogoutActions.LogoutCallback)} />\r\n logoutAction(LogoutActions.LoggedOut)} />\r\n );\r\n }\r\n}\r\n\r\nfunction loginAction(name){\r\n return ();\r\n}\r\n\r\nfunction logoutAction(name) {\r\n return ();\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass Program extends Component {\r\n state = {\r\n isChecked: this.props.isChecked,\r\n }\r\n\r\n toggleCheckboxChange = () => {\r\n const { handleCheckboxChange, label } = this.props;\r\n\r\n this.setState(({ isChecked }) => (\r\n {\r\n isChecked: !isChecked,\r\n }\r\n ));\r\n\r\n handleCheckboxChange(label);\r\n }\r\n\r\n render() {\r\n //console.log(\"***In Program.jsx***\");\r\n //console.log(this.props);\r\n const { label } = this.props;\r\n const { isChecked } = this.props;\r\n const style = { margin: \"-1px 0px 0 0\" };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Program;","import React, { Component } from \"react\";\r\nimport Program from \"./Program\";\r\nimport NumberFormat from \"react-number-format\";\r\n\r\nexport class Application extends Component {\r\n state = {\r\n programs: [],\r\n cooperators: [],\r\n counties: \"\",\r\n programsDisplay: \"\",\r\n appId: this.props.appId,\r\n dataSavedSuccessfully: true,\r\n saveStatusMessage: null,\r\n applicationFiscalYearId: null,\r\n errors: {\r\n ProjectName: \"\",\r\n NewProject: \"\",\r\n CooperatorId: \"\",\r\n ContactName: \"\",\r\n ContactAddress: \"\",\r\n ContactCity: \"\",\r\n ContactState: \"\",\r\n ContactZip: \"\",\r\n ContactPhone: \"\",\r\n ContactFax: \"\",\r\n ContactEmail: \"\",\r\n Programs: \"\",\r\n Counties: \"\"\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleCooperatorChange = this.handleCooperatorChange.bind(this);\r\n this.handleOptionChange = this.handleOptionChange.bind(this);\r\n this.handleCountyChange = this.handleCountyChange.bind(this);\r\n }\r\n\r\n populateApplication(data) {\r\n console.log(\"data\", data);\r\n if (data.applicationFiscalYearId !== null) {\r\n this.setState({ applicationFiscalYearId: data.applicationFiscalYearId });\r\n }\r\n if (data.applicationStatusId !== null) {\r\n this.setState({ applicationStatusId: data.applicationStatusId });\r\n } else {\r\n this.setState({ applicationStatusId: 1 });\r\n }\r\n if (data.applicationId !== null) {\r\n this.setState({ appNumber: data.applicationId });\r\n }\r\n if (data.cfiProjectName !== null) {\r\n this.setState({ projectName: data.cfiProjectName });\r\n }\r\n if (data.cooperatorId !== null) {\r\n this.setState({ cooperatorId: data.cooperatorId });\r\n }\r\n if (data.availablePrograms !== null) {\r\n var countyArr = data.availablePrograms.split(',');\r\n for (const checkbox of countyArr) {\r\n this.selectPrograms.add(checkbox);\r\n }\r\n this.setState({ programsDisplay: data.availablePrograms });\r\n }\r\n if (data.isNewProjectFlg !== null && data.isNewProjectFlg !== 0) {\r\n this.setState({ selectedOption: \"Yes\" });\r\n } else {\r\n this.setState({ selectedOption: \"No\" });\r\n }\r\n if (data.contactName) {\r\n this.setState({ contactName: data.contactName });\r\n }\r\n if (data.contactAddress) {\r\n this.setState({ contactAddress: data.contactAddress });\r\n }\r\n if (data.contactCity) {\r\n this.setState({ contactCity: data.contactCity });\r\n }\r\n if (data.contactState) {\r\n this.setState({ contactState: data.contactState });\r\n }\r\n if (data.contactZip) {\r\n this.setState({ contactZip: data.contactZip });\r\n }\r\n if (data.contactPhone) {\r\n this.setState({ contactPhone: data.contactPhone });\r\n }\r\n if (data.contactExtension) {\r\n this.setState({ contactExtension: data.contactExtension });\r\n }\r\n if (data.contactEmail) {\r\n this.setState({ contactEmail: data.contactEmail });\r\n }\r\n if (data.countiesBenefited) {\r\n this.setState({ counties: data.countiesBenefited });\r\n }\r\n const counties = this.state.counties;\r\n var fld = document.getElementById(\"counties\");\r\n for (var i = 0; i < fld.options.length; i++) {\r\n var n = counties.includes(fld.options[i].value);\r\n if (n === true) { // is in string?\r\n fld.options[i].selected = true; // set attr selected to true\r\n }\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // Typical usage (don't forget to compare props):\r\n if (this.props.appId !== prevProps.appId) {\r\n this.getApplication();\r\n this.getCooperators();\r\n this.getPrograms();\r\n }\r\n }\r\n\r\n getApplication() {\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateApplication(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n this.selectPrograms = new Set();\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateApplication(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n this.getCooperators();\r\n this.getPrograms();\r\n }\r\n\r\n getPrograms() {\r\n fetch(this.props.url + 'LUAvailablePrograms/Active')\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n let programsFromApi = response.map(program => {\r\n return { value: program.availableProgramId, display: program.description }\r\n });\r\n this.setState({\r\n programs: programsFromApi\r\n });\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n getCooperators() {\r\n fetch(this.props.url + 'Party/Cooperator')\r\n .then((response) => {\r\n if (response.status < 400 && response.status !== 204) {\r\n response.json().then(response => {\r\n console.log(\"response\", response);\r\n let cooperatorsFromApi = response.map(cooperator => {\r\n //return { value: cooperator.PARTY_ID, display: cooperator.PARTY_NAME }\r\n return { value: cooperator.cooperatorId, display: cooperator.cooperatorName }\r\n });\r\n this.setState({\r\n cooperators: cooperatorsFromApi\r\n });\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n toggleCheckbox = label => {\r\n if (this.selectPrograms.has(label)) {\r\n this.selectPrograms.delete(label);\r\n } else {\r\n this.selectPrograms.add(label);\r\n }\r\n let programsDisplay = \"\";\r\n for (const checkbox of this.selectPrograms) {\r\n if (programsDisplay !== \"\") {\r\n programsDisplay += \", \" + checkbox;\r\n } else {\r\n programsDisplay = checkbox;\r\n }\r\n }\r\n this.setState({ programsDisplay: programsDisplay });\r\n }\r\n\r\n handleChange(e) {\r\n const target = e.target;\r\n const name = target.name;\r\n const value = target.value;\r\n this.setState({ [name]: value });\r\n }\r\n\r\n\r\n inputChangedHandler(e) {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n handleCooperatorChange(e) {\r\n const target = e.target;\r\n const name = target.name;\r\n const value = target.value\r\n\r\n this.setState({ [name]: value });\r\n }\r\n\r\n handleOptionChange = changeEvent => {\r\n this.setState({ selectedOption: changeEvent.target.value });\r\n };\r\n\r\n handleCountyChange() {\r\n var fld = document.getElementById(\"counties\");\r\n var result = \"\";\r\n for (var i = 0; i < fld.options.length; i++) {\r\n if (fld.options[i].selected === true) {\r\n if (result !== \"\") {\r\n result += \", \" + fld.options[i].value;\r\n } else {\r\n result = fld.options[i].value;\r\n }\r\n }\r\n }\r\n this.setState({ counties: result });\r\n }\r\n\r\n handleAppId(applicationId) {\r\n this.setState({ appNumber: applicationId })\r\n this.props.setAppId(applicationId);\r\n }\r\n\r\n getPhoneValue(val) {\r\n var value;\r\n if (val) {\r\n value = val.toString();\r\n value = parseInt((value.replace(/-/g, \"\")), 10);\r\n }\r\n else {\r\n value = val;\r\n }\r\n\r\n return parseInt(value);\r\n }\r\n\r\n handleValidation(data) {\r\n\r\n this.setState({ statusMessage: null })\r\n let errors = {\r\n ProjectName: \"\",\r\n NewProject: \"\",\r\n CooperatorId: \"\",\r\n ContactName: \"\",\r\n ContactAddress: \"\",\r\n ContactCity: \"\",\r\n ContactState: \"\",\r\n ContactZip: \"\",\r\n ContactPhone: \"\",\r\n ContactFax: \"\",\r\n ContactEmail: \"\",\r\n Programs: \"\",\r\n Counties: \"\"\r\n };\r\n let formIsValid = true;\r\n\r\n if (!data.cfiProjectName) {\r\n formIsValid = false;\r\n errors[\"ProjectName\"] = \"Cannot be empty\";\r\n }\r\n if (!data.cooperatorId) {\r\n formIsValid = false;\r\n errors[\"CooperatorId\"] = \"A Cooperator must be selected\";\r\n }\r\n if (!data.contactName) {\r\n formIsValid = false;\r\n errors[\"ContactName\"] = \"Cannot be empty\";\r\n }\r\n if (!data.contactAddress) {\r\n formIsValid = false;\r\n errors[\"ContactAddress\"] = \"Cannot be empty\";\r\n }\r\n if (!data.contactCity) {\r\n formIsValid = false;\r\n errors[\"ContactCity\"] = \"Cannot be empty\";\r\n }\r\n if (!data.contactState) {\r\n formIsValid = false;\r\n errors[\"ContactState\"] = \"Cannot be empty\";\r\n }\r\n if (!data.contactZip) {\r\n formIsValid = false;\r\n errors[\"ContactZip\"] = \"Cannot be empty\";\r\n } else {\r\n if (!errors[\"Zip\"] && !Number(data.contactZip)) {\r\n formIsValid = false;\r\n errors[\"Zip\"] = \"Must be a numeric value\";\r\n }\r\n if (!errors[\"Zip\"] && data.contactZip.length < 5) {\r\n formIsValid = false;\r\n errors[\"Zip\"] = \"Must be 5 numbers long\";\r\n }\r\n }\r\n if (!data.contactEmail) {\r\n formIsValid = false;\r\n errors[\"ContactEmail\"] = \"Cannot be empty\";\r\n }\r\n else {\r\n if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(data.contactEmail)) {\r\n formIsValid = false;\r\n errors[\"ContactEmail\"] = \"Email address is invalid\";\r\n }\r\n }\r\n if (!data.contactPhone) {\r\n formIsValid = false;\r\n errors[\"ContactPhone\"] = \"Cannot be empty\";\r\n } else {\r\n if (data.contactPhone) {\r\n var phone = parseInt(data.contactPhone.toString().replace(/-/g, \"\"));\r\n\r\n if (!errors[\"ContactPhone\"] && !Number(phone)) {\r\n formIsValid = false;\r\n errors[\"ContactPhone\"] = \"Must be a numeric value\";\r\n }\r\n if (!errors[\"ContactPhone\"] && phone.toString().length !== 10) {\r\n formIsValid = false;\r\n errors[\"ContactPhone\"] = \"Must be 10 numbers long\";\r\n }\r\n }\r\n }\r\n if (!data.countiesBenefited) {\r\n formIsValid = false;\r\n errors[\"Counties\"] = \"Must select at least one county\";\r\n }\r\n\r\n this.setState({ errors: errors });\r\n return formIsValid;\r\n }\r\n\r\n appNext = (e) => {\r\n e.preventDefault();\r\n const date = new Date();\r\n\r\n let data = {\r\n ApplicationFiscalYearId: null,\r\n IsNewProjectFlg: null,\r\n CooperatorId: null,\r\n ContactName: null,\r\n ContactAddress: null,\r\n ContactCity: null,\r\n ContactState: null,\r\n ContactZip: null,\r\n ContactPhone: null,\r\n ContactExtension: null,\r\n ContactFax: null,\r\n ContactEmail: null,\r\n ComplementaryEfforts: null,\r\n DateSubmitted: null,\r\n ApplicationStatusId: null,\r\n CooperatorName: null,\r\n ApplicationCustom3: null,\r\n ApplicationCustom4: null,\r\n ApplicationCustom5: null,\r\n LastUpdateUserId: null,\r\n LastUpdateDate: date,\r\n AspNetUserId: null,\r\n }\r\n\r\n const fy = new Date();\r\n\r\n if (!this.state.appNumber) {\r\n data.applicationId = null;\r\n } else {\r\n data.applicationId = this.state.appNumber;\r\n }\r\n //TSvoboda - FY needs to be this year plus 2 (i.e. it is 2020, we need to submit for 2022)\r\n if (!this.state.applicationFiscalYearId) {\r\n data.applicationFiscalYearId = fy.getFullYear() + 2;\r\n } else {\r\n data.applicationFiscalYearId = this.state.applicationFiscalYearId;\r\n }\r\n if (!this.state.projectName) {\r\n data.cfiProjectName = null;\r\n } else {\r\n data.cfiProjectName = this.state.projectName;\r\n }\r\n if (this.state.selectedOption === \"Yes\") {\r\n data.isNewProjectFlg = 1;\r\n } else if (this.state.selectedOption === \"No\") {\r\n data.isNewProjectFlg = 0;\r\n }\r\n\r\n if (!this.state.programsDisplay) {\r\n data.availablePrograms = null;\r\n } else {\r\n data.availablePrograms = this.state.programsDisplay;\r\n }\r\n if (!this.state.counties) {\r\n data.countiesBenefited = null;\r\n } else {\r\n data.countiesBenefited = this.state.counties;\r\n }\r\n if (!this.state.cooperatorId) {\r\n data.cooperatorId = null;\r\n } else {\r\n data.cooperatorId = Number(this.state.cooperatorId);\r\n }\r\n if (!this.state.contactName) {\r\n data.contactName = null;\r\n } else {\r\n data.contactName = this.state.contactName;\r\n }\r\n if (!this.state.contactAddress) {\r\n data.contactAddress = null;\r\n } else {\r\n data.contactAddress = this.state.contactAddress;\r\n }\r\n if (!this.state.contactCity) {\r\n data.contactCity = null;\r\n } else {\r\n data.contactCity = this.state.contactCity;\r\n }\r\n if (!this.state.contactState) {\r\n data.contactState = null;\r\n } else {\r\n data.contactState = this.state.contactState;\r\n }\r\n if (!this.state.contactZip) {\r\n data.contactZip = null;\r\n } else {\r\n data.contactZip = this.state.contactZip;\r\n }\r\n if (!this.state.contactPhone) {\r\n data.contactPhone = null;\r\n } else {\r\n data.contactPhone = this.getPhoneValue(this.state.contactPhone).toString();\r\n }\r\n\r\n if (!this.state.contactExtension) {\r\n data.contactExtension = null;\r\n } else {\r\n data.contactExtension = this.state.contactExtension;\r\n }\r\n\r\n if (!this.state.applicationStatusId) {\r\n data.applicationStatusId = 1;\r\n } else {\r\n data.applicationStatusId = this.state.applicationStatusId;\r\n }\r\n\r\n if (!this.state.contactEmail) {\r\n data.contactEmail = null;\r\n } else {\r\n data.contactEmail = this.state.contactEmail;\r\n }\r\n data.aspNetUserId = this.props.userId\r\n\r\n if (this.handleValidation(data)) {\r\n if (!this.props.appId) {\r\n\r\n fetch(this.props.url + 'Application', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => response.json()).catch(error => { console.log(error); this.setState({ dataSavedSuccessfully: false }); })\r\n .then(result => this.handleAppId(result.applicationId));\r\n } else {\r\n fetch(this.props.url + 'Application/' + this.props.appId, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => response.json()).catch(error => { console.log(error); this.setState({ dataSavedSuccessfully: false }); })\r\n .then(result => this.handleAppId(result.applicationId));\r\n }\r\n this.props.setTab('Application');\r\n\r\n if (this.state.dataSavedSuccessfully === true) {\r\n this.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n } else {\r\n this.setState({ saveStatusMessage: 'There was an error. Changes were not saved.' });\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n \r\n const countybadge = { whiteSpace: 'normal' }\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 {this.state.errors.ProjectName.length > 0 &&\r\n {this.state.errors.ProjectName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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.errors.Counties.length > 0 &&\r\n {this.state.errors.Counties}}\r\n
\r\n
\r\n
\r\n \r\n {this.state.counties}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.state.programs.map(program => (\r\n this.state.programsDisplay.includes(program.display) ?\r\n ()\r\n : ()\r\n ))}\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.cooperators.map(cooperator => (\r\n \r\n ))}\r\n \r\n {this.state.errors.CooperatorId.length > 0 &&\r\n {this.state.errors.CooperatorId}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.state.errors.ContactName.length > 0 &&\r\n {this.state.errors.ContactName}}\r\n
\r\n
\r\n \r\n \r\n {this.state.errors.ContactEmail.length > 0 &&\r\n {this.state.errors.ContactEmail}}\r\n
\r\n
\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ContactPhone: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ContactPhone.length > 0 &&\r\n {this.state.errors.ContactPhone}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.state.errors.ContactAddress.length > 0 &&\r\n {this.state.errors.ContactAddress}}\r\n
\r\n
\r\n \r\n \r\n {this.state.errors.ContactCity.length > 0 &&\r\n {this.state.errors.ContactCity}}\r\n
\r\n
\r\n \r\n \r\n {this.state.errors.ContactState.length > 0 &&\r\n {this.state.errors.ContactState}}\r\n
\r\n
\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ContactZip: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ContactZip.length > 0 &&\r\n {this.state.errors.ContactZip}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\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 & Continue\r\n\t\t\t\t\t\t\t\t\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass ProjectTypes extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n projects: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n\r\n fetch(this.props.url + 'LUProjectTypes')\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n if (this._isMounted) {\r\n //console.log('response');\r\n //console.log(response);\r\n let projectsFromApi = response.map(project => {\r\n return { value: project.projectTypeId, label: project.description }\r\n });\r\n\r\n this.setState({ projects: projectsFromApi });\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\r\n //console.log(\"***In ProjectTypes.jsx***\");\r\n const { projects } = this.state;\r\n const { value } = this.props;\r\n\r\n let projectsList = projects.length > 0\r\n && projects.map((project) => {\r\n return (\r\n \r\n )\r\n }, this);\r\n\r\n return (\r\n
\r\n \r\n \r\n {projectsList}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ProjectTypes;","import React, { Component } from \"react\";\r\n\r\nclass StrategicInitiatives extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n strats: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n fetch(this.props.url + 'LUStrategicInitiatives')\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n if (this._isMounted) {\r\n const filteredStrats = response.filter(r => r.relatedProjectTypeId === this.props.project);\r\n let stratsFromApi = filteredStrats.map(strat => {\r\n return { value: strat.strategicInitiativeId, label: strat.description }\r\n });\r\n this.setState({ strats: stratsFromApi });\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\r\n\r\n const { strats } = this.state;\r\n const { project } = this.props;\r\n const { value } = this.props;\r\n const { onStrategicChange } = this.props;\r\n\r\n let stratsList = strats.length > 0\r\n && strats.map((strat) => {\r\n return (\r\n \r\n )\r\n }, this);\r\n\r\n return (\r\n
\r\n 0 ? false : true)}\r\n >\r\n \r\n {stratsList}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default StrategicInitiatives;","import React, { Component } from \"react\";\r\nimport ProjectTypes from \"./WidgetComponents/ProjectTypes\";\r\nimport StrategicInitiatives from \"./WidgetComponents/StrategicInitiatives\";\r\n\r\nclass ProjectRow extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleChange = this.handleProjectChange.bind(this);\r\n this.handleChange = this.handleStrategicChange.bind(this);\r\n\r\n this.state = {\r\n id: 0,\r\n project: 0,\r\n strategic: 0,\r\n projectErrors: \"\",\r\n strategicErrors: \"\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.rowId > 1) {\r\n //console.log(this.props.url + 'ApplicationProjectTypes/' + this.props.rowId);\r\n fetch(this.props.url + 'ApplicationProjectTypes/' + this.props.rowId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(row => {\r\n //console.log('row');\r\n //console.log(row);\r\n this.setState({\r\n id: row.applicationProjectTypeId,\r\n project: row.projectTypeId,\r\n strategic: row.strategicInitiativeId,\r\n projectErrors: \"\",\r\n strategicErrors: \"\"\r\n });\r\n this.props.onRowChange(this.props.rowId, {\r\n id: row.applicationProjectTypeId,\r\n project: row.projectTypeId,\r\n strategic: row.strategicInitiativeId,\r\n })\r\n },\r\n ).catch(error => {\r\n console.log(error);\r\n });\r\n } else {\r\n this.setState({\r\n id: this.props.rowId,\r\n project: 0,\r\n strategic: 0,\r\n projectErrors: \"Selection Required\",\r\n strategicErrors: \"Selection Required\"\r\n })\r\n this.props.onRowChange(this.props.rowId, {\r\n id: this.props.rowId,\r\n project: 0,\r\n strategic: 0,\r\n })\r\n //this.props.showValidation(false);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n handleProjectChange(e) {\r\n const date = new Date();\r\n this.setState({ project: parseInt(e.target.value, 10), id: date.getTime() });\r\n this.props.onRowChange(this.props.rowId, { project: parseInt(e.target.value, 10), strategic: 0 })\r\n\r\n if (e.target.value === 0 || e.target.value === \"0\") {\r\n this.setState({ projectErrors: \"Selection Required\" })\r\n this.setState({ strategicErrors: \"Selection Required\" })\r\n } else {\r\n this.setState({ projectErrors: \"\" })\r\n this.setState({ strategicErrors: \"Selection Required\" })\r\n }\r\n\r\n this.props.isValid(false);\r\n };\r\n\r\n handleStrategicChange(e) {\r\n\r\n this.setState({ strategic: parseInt(e.target.value, 10) });\r\n this.props.onRowChange(this.props.rowId, { strategic: parseInt(e.target.value, 10) })\r\n if (e.target.value === 0 || e.target.value === \"0\") {\r\n this.setState({ strategicErrors: \"Selection Required\" })\r\n this.props.isValid(false);\r\n } else {\r\n this.setState({ strategicErrors: \"\" })\r\n this.props.isValid(true);\r\n }\r\n };\r\n\r\n render() {\r\n\r\n const { id } = this.state;\r\n const { project } = this.state;\r\n const { strategic } = this.state;\r\n const { showErrors } = this.props;\r\n const { url } = this.props;\r\n\r\n return (\r\n \r\n {/*this.props.rowId*/}\r\n \r\n \r\n \r\n \r\n \r\n {this.props.showDelete &&\r\n \r\n \r\n {/*\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t*/}\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ProjectRow;","import React, { Component } from \"react\";\r\n\r\nclass MilestoneRow extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n\r\n this.state = {\r\n id: 0,\r\n timeline: \"\",\r\n milestone: \"\",\r\n duedate: \"\",\r\n milestoneErrors: \"\",\r\n duedateErrors: \"\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // const date = new Date();\r\n\r\n this._isMounted = true;\r\n\r\n if (this.props.rowId > 1) {\r\n //console.log(\"Milestone Row URL: \" + this.props.url + 'ApplicationMilestones/' + this.props.rowId)\r\n fetch(this.props.url + 'ApplicationMilestones/' + this.props.rowId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(row => {\r\n if (this._isMounted) {\r\n this.setState({\r\n id: row.applicationMilestoneId,\r\n timeline: row.timelineText,\r\n milestone: row.milestoneText,\r\n duedate: row.dueDate.substr(0, 10),\r\n milestoneErrors: \"\",\r\n duedateErrors: \"\"\r\n });\r\n this.props.onRowChange(this.props.rowId, {\r\n id: row.applicationMilestoneId,\r\n timeline: row.timelineText,\r\n milestone: row.milestoneText,\r\n duedate: row.dueDate.substr(0, 10),\r\n })\r\n }\r\n },\r\n ).catch(error => {\r\n console.log(error);\r\n });\r\n } else {\r\n this.setState({\r\n id: this.props.rowId,\r\n milestoneErrors: \"Cannot be empty\",\r\n duedateErrors: \"Cannot be empty\"\r\n })\r\n this.props.onRowChange(this.props.rowId, {\r\n id: this.props.rowId,\r\n timeline: \"\",\r\n milestone: \"\",\r\n duedate: \"\",\r\n })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n handleChange(e) {\r\n\r\n if (e.target.name === 'milestone') {\r\n if (e.target.value === '') {\r\n this.setState({ milestoneErrors: \"Cannot be empty\" })\r\n this.props.isValid(false);\r\n } else {\r\n this.setState({ milestoneErrors: \"\" })\r\n this.props.isValid(true);\r\n }\r\n }\r\n\r\n const year = new Date().getFullYear();\r\n\r\n if (e.target.name === 'duedate') {\r\n const dueDate = new Date(e.target.value);\r\n\r\n if (e.target.value === '') {\r\n this.setState({ duedateErrors: \"Cannot be empty\" })\r\n this.props.isValid(false);\r\n } else if\r\n\r\n (dueDate.getFullYear() < year - 5) {\r\n this.setState({ duedateErrors: \"Date must not be prior to 5 years. \" })\r\n this.props.isValid(false);\r\n } else {\r\n this.setState({ duedateErrors: \"\" })\r\n this.props.isValid(true);\r\n }\r\n }\r\n\r\n this.setState({ [e.target.name]: e.target.value });\r\n this.props.onRowChange(this.props.rowId, { [e.target.name]: e.target.value })\r\n }\r\n\r\n render() {\r\n //console.log(\"***In MilestoneRow.jsx***\");\r\n //console.log(\"MilestoneRow render\");\r\n //console.log(this.props);\r\n //console.log(this.state);\r\n\r\n //const { id } = this.props;\r\n //const { timeline } = this.state;\r\n const { milestone } = this.state;\r\n const { duedate } = this.state;\r\n const { showErrors } = this.props;\r\n // const duedatealign = { \"verticalAlign\": \"middle\" }; //align-items: center;\r\n\r\n return (\r\n \r\n {/*\r\n \r\n */}\r\n \r\n \r\n {this.state.milestoneErrors.length > 0 && showErrors &&\r\n {this.state.milestoneErrors}}\r\n \r\n {/*Note that the type of \"date\" here breaks in Edge- for now we'll hard code it or maybe put a function if we have time*/}\r\n \r\n \r\n {this.state.duedateErrors.length > 0 && showErrors &&\r\n {this.state.duedateErrors}}\r\n \r\n {/*{this.props.rowCount > 1 &&*/}\r\n \r\n \r\n Delete\r\n\t\t\t\t\t\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default MilestoneRow;","import React, { Component } from \"react\";\r\nimport ProjectRow from \"./RowComponents/ProjectRow\";\r\nimport MilestoneRow from \"./RowComponents/MilestoneRow\";\r\n\r\n// TODO: Rewrite consideration\r\n// - ProjectScheduling MilestoneRow should be called Milestone ProjectRow should be Project\r\n// - Cchanges: milestonerows would be milestones/schedule, projectrow would be projects\r\nexport class Milestones extends Component {\r\n state = {\r\n projectrows: [],\r\n milestonerows: [],\r\n projectrowsData: [],\r\n milestonerowsData: [],\r\n areProjectsValid: true,\r\n areMilestonesValid: true,\r\n saveStatusMessage: null,\r\n statusMessage: \"\",\r\n saveErrors: \"\",\r\n errors: {\r\n Project: \"\",\r\n Milestone: \"\",\r\n },\r\n showErrors: false,\r\n loading: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.isFormValid = this.isFormValid.bind(this);\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'ApplicationProjectTypes/ApplicationId/' + this.props.appId)\r\n .then((response) => {\r\n if (response.status < 400 && response.status !== 204) {\r\n response.json().then(result => this.populateProjectRows(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n });\r\n\r\n fetch(this.props.url + 'ApplicationMilestones/ApplicationId/' + this.props.appId)\r\n .then((response) => {\r\n if (response.status < 400 && response.status !== 204) {\r\n response.json().then(result => this.populateMilestoneRows(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n populateProjectRows(data) {\r\n let projectrows = [];\r\n let projectrowsData = [];\r\n for (let entry in data) {\r\n projectrows.push(data[entry].applicationProjectTypeId);\r\n projectrowsData.push({\r\n id: data[entry].applicationProjectTypeId,\r\n project: 0,\r\n strategic: 0,\r\n });\r\n }\r\n this.setState({ projectrows });\r\n this.setState({ projectrowsData });\r\n }\r\n\r\n populateMilestoneRows(data) {\r\n let milestonerows = [];\r\n let milestonerowsData = [];\r\n for (let entry in data) {\r\n milestonerows.push(data[entry].applicationMilestoneId);\r\n milestonerowsData.push({\r\n id: data[entry].applicationMilestoneId,\r\n timeline: \"\",\r\n milestone: \"\",\r\n duedate: \"\",\r\n });\r\n }\r\n this.setState({ milestonerows });\r\n this.setState({ milestonerowsData });\r\n }\r\n\r\n handleProjectRowInputChange = (rowId, data) => {\r\n\r\n this.setState({ saveStatusMessage: null });\r\n let projectrowsData = [...this.state.projectrowsData];\r\n let i = 0;\r\n const ii = projectrowsData.length;\r\n for (i; i < ii; i++) if (projectrowsData[i].id === rowId) break;\r\n\r\n for (let field in data) { projectrowsData[i][field] = data[field]; }\r\n\r\n this.setState({ projectrowsData });\r\n };\r\n\r\n handleMilestoneRowInputChange = (rowId, data) => {\r\n this.setState({ saveStatusMessage: null });\r\n let milestonerowsData = [...this.state.milestonerowsData];\r\n let i = 0;\r\n const ii = milestonerowsData.length;\r\n for (i; i < ii; i++) if (milestonerowsData[i].id === rowId) break;\r\n\r\n for (let field in data) { milestonerowsData[i][field] = data[field]; }\r\n\r\n this.setState({ milestonerowsData });\r\n };\r\n\r\n appendProjectRow = () => {\r\n let projectrows = [...this.state.projectrows];\r\n let projectrowsData = [...this.state.projectrowsData];\r\n\r\n const date = new Date();\r\n\r\n projectrows.push(-1 * date.getTime());\r\n projectrowsData.push({\r\n id: -1 * date.getTime(),\r\n project: 0,\r\n strategic: 0,\r\n });\r\n this.setState({ projectrows });\r\n this.setState({ projectrowsData });\r\n this.setState({ areProjectsValid: false });\r\n }\r\n\r\n appendMilestoneRow = () => {\r\n let milestonerows = [...this.state.milestonerows];\r\n let milestonerowsData = [...this.state.milestonerowsData];\r\n\r\n const date = new Date();\r\n milestonerows.push(-1 * date.getTime());\r\n milestonerowsData.push({\r\n id: -1 * date.getTime(),\r\n timeline: \"\",\r\n milestone: \"\",\r\n duedate: \"\",\r\n });\r\n this.setState({ milestonerows });\r\n this.setState({ milestonerowsData });\r\n this.setState({ areMilestonesValid: false });\r\n }\r\n\r\n setMinMilestoneDate() {\r\n var date = new Date();\r\n return (date.getFullYear() - 5);\r\n };\r\n\r\n handleRemoveProject = rowId => {\r\n this.setState({ loading: true })\r\n const projectrows = this.state.projectrows.filter(r => r !== rowId);\r\n const projectrowsData = this.state.projectrowsData.filter(r => r.id !== rowId);\r\n\r\n if (rowId > 0) {\r\n this.deleteProject(rowId);\r\n }\r\n\r\n this.setState({ projectrows });\r\n this.setState({ projectrowsData });\r\n this.setState({ loading: false })\r\n };\r\n\r\n handleRemoveMilestone = rowId => {\r\n this.setState({ loading: true })\r\n const milestonerows = this.state.milestonerows.filter(r => r !== rowId);\r\n const milestonerowsData = this.state.milestonerowsData.filter(r => r.id !== rowId);\r\n\r\n if (rowId > 0) {\r\n this.deleteMilestone(rowId);\r\n }\r\n\r\n this.setState({ milestonerows });\r\n this.setState({ milestonerowsData });\r\n this.setState({ saveStatusMessage: \"\" });\r\n this.setState({ statusMessage: \"\" });\r\n this.setState({ loading: false })\r\n };\r\n\r\n deleteProject(id) {\r\n fetch(this.props.url + 'ApplicationProjectTypes/' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n\r\n deleteMilestone(id) {\r\n fetch(this.props.url + 'ApplicationMilestones/' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(response => response.json()).catch(error => {\r\n console.log(error)\r\n });\r\n }\r\n\r\n handleProjectTypeValidation(data) {\r\n let formIsValid = true;\r\n if (data.length) {\r\n for (let entry in data) {\r\n if (data[entry].project === null || data[entry].strat === null) {\r\n formIsValid = false;\r\n }\r\n }\r\n }\r\n return formIsValid;\r\n };\r\n\r\n handleProjectValidation = (areProjectsValid) => {\r\n this.setState({ areProjectsValid });\r\n this.setState({ showErrors: false });\r\n this.setState({ statusMessage: \"\" });\r\n }\r\n\r\n handleMilestoneValidation = (areMilestonesValid) => {\r\n this.setState({ areMilestonesValid });\r\n this.setState({ showErrors: false });\r\n this.setState({ statusMessage: \"\" });\r\n }\r\n\r\n isFormValid() {\r\n\r\n let formIsValid = true;\r\n\r\n if (this.state.milestonerows.length > 0) {\r\n\r\n let mss = [...this.state.milestonerowsData];\r\n\r\n const year = new Date().getFullYear();\r\n\r\n mss.forEach((mrow) => {\r\n if ((mrow.milestone === '') || (mrow.duedate === '')) {\r\n this.setState({ areMilestonesValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Milestone or Due Date value is missing\" });\r\n formIsValid = false;\r\n } else {\r\n const dueDt = new Date(mrow.duedate);\r\n if (dueDt.getFullYear() < year - 5) {\r\n this.setState({ areMilestonesValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Due Date must not be prior to 5 years \" });\r\n formIsValid = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!this.state.projectrows.length > 0) {\r\n this.setState({ areProjectsValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Must have at least one Project Type/Strategic Initiative value\" });\r\n //errors[\"Project\"] = \"Must have at least one Project Type/Strategic Initiative value\";\r\n formIsValid = false;\r\n } else {\r\n let prs = [...this.state.projectrowsData];\r\n prs.forEach((prow) => {\r\n if ((prow.project === 0) || (prow.strategic === 0)) {\r\n this.setState({ areProjectsValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Project Type or Strategic Initiative is missing\" });\r\n formIsValid = false;\r\n }\r\n });\r\n }\r\n\r\n return formIsValid;\r\n }\r\n\r\n isMilestoneRowValid(rowData) {\r\n let isValid = true;\r\n const year = new Date().getFullYear();\r\n const dueDate = new Date(rowData.DueDate);\r\n\r\n if ((rowData.MilestoneText === '') || (rowData.DueDate === '')) {\r\n this.setState({ areMilestonesValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Milestone and Due Date cannot be empty\" });\r\n isValid = false;\r\n } else if (dueDate.getFullYear() < year - 5) {\r\n this.setState({ areMilestonesValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \"Due Date must not be prior to 5 years. \" });\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n isProjectRowValid(rowData) {\r\n let isValid = true;\r\n\r\n if ((rowData.ProjectTypeId === 0) || (rowData.StrategicInitiativeId === 0)) {\r\n this.setState({ areProjectsValid: false });\r\n this.setState({ showErrors: true });\r\n this.setState({ statusMessage: \" Project Type/Strategic Initiative cannot be empty\" });\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n appNext = (e) => {\r\n e.preventDefault();\r\n this.setState({ loading: true })\r\n\r\n const date = new Date();\r\n\r\n // Has at least one project row and Milestone row\r\n if (this.isFormValid()) {\r\n let prs = [...this.state.projectrowsData];\r\n for (let pr in prs) {\r\n let data = {\r\n \"ApplicationProjectTypeId\": null,\r\n \"ApplicationID\": this.props.appId,\r\n \"ProjectTypeId\": prs[pr].project,\r\n \"StrategicInitiativeId\": prs[pr].strategic,\r\n \"ApplicationProjectTypeCustom1\": null,\r\n \"ApplicationProjectTypeCustom2\": null,\r\n \"ApplicationProjectTypeCustom3\": null,\r\n \"ApplicationProjectTypeCustom4\": null,\r\n \"ApplicationProjectTypeCustom5\": null,\r\n \"LastUpdateUserId\": null,\r\n \"LastUpdateDate\": date\r\n };\r\n\r\n if (prs[pr].id > 0) {\r\n data.ApplicationProjectTypeId = prs[pr].id;\r\n\r\n fetch(this.props.url + 'ApplicationProjectTypes/' + prs[pr].id, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n }).then((response) => {\r\n if (response.ok) {\r\n response.json()\r\n } else {\r\n throw response;\r\n }\r\n })\r\n .catch(err => {\r\n this.setState({ saveErrors: \"A error occured saving Project Types Update. Please contact the District for assistance\" });\r\n })\r\n } else {\r\n fetch(this.props.url + 'ApplicationProjectTypes', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n }).then((response) => {\r\n if (response.ok) {\r\n response.json()\r\n } else {\r\n throw response;\r\n }\r\n }).catch(err => {\r\n this.setState({ saveErrors: \"A error occured saving Project Types Add. Please contact the District for assistance\" });\r\n })\r\n }\r\n }\r\n \r\n let valid = true;\r\n let mss = [...this.state.milestonerowsData];\r\n for (let ms in mss) {\r\n let data = {\r\n \"ApplicationMilestoneId\": null,\r\n \"ApplicationID\": this.props.appId,\r\n \"DueDate\": mss[ms].duedate,\r\n \"TimelineText\": mss[ms].timeline,\r\n \"MilestoneText\": mss[ms].milestone,\r\n \"ApplicationMilestoneCustom1\": null,\r\n \"ApplicationMilestoneCustom2\": null,\r\n \"ApplicationMilestoneCustom3\": null,\r\n \"ApplicationMilestoneCustom4\": null,\r\n \"ApplicationMilestoneCustom5\": null,\r\n \"LastUpdateUserId\": null,\r\n \"LastUpdateDate\": date\r\n };\r\n\r\n if (mss[ms].id > 0) {\r\n data.ApplicationMilestoneId = mss[ms].id;\r\n\r\n fetch(this.props.url + 'ApplicationMilestones/' + mss[ms].id, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n }).then(response => response.json()).catch(error => {\r\n console.log(error)\r\n })\r\n } else {\r\n fetch(this.props.url + 'ApplicationMilestones', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n }).then(response => response.json()).catch(error => {\r\n console.log(error)\r\n })\r\n }\r\n }\r\n if (valid) {\r\n this.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n }\r\n } else {\r\n this.setState({ saveStatusMessage: 'Changes not saved' });\r\n }\r\n this.setState({ loading: false })\r\n }\r\n\r\n\r\n render() {\r\n //console.log(\"***In Milestones.jsx***\");\r\n const style = { color: '#0062cc' };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Project Type\r\n Strategic Initiatives\r\n {this.state.projectrows.length > 1 &&\r\n \r\n }\r\n \r\n \r\n \r\n {/*{this.state.projectrows.length &&*/}\r\n {this.state.projectrows.map(row => (\r\n 1 ? true : false)}\r\n removeRow={this.handleRemoveProject.bind(this, row)}\r\n isValid={this.handleProjectValidation}\r\n showErrors={this.state.showErrors}\r\n appId={this.props.appId}\r\n url={this.props.url}\r\n closed={this.props.closed}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n \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.milestonerows.length > 0 &&\r\n \r\n }\r\n \r\n \r\n \r\n {this.state.milestonerows.map(row => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
MilestoneDue Date
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.state.statusMessage.length > 0 && this.state.showErrors === 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 \r\n Save & Continue\r\n\t\t\t\t\t\t\t\t\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './Dropzone.css'\r\n\r\nexport class Dropzone extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { hightlight: false };\r\n\t\tthis.fileInputRef = React.createRef();\r\n\t\tthis.openFileDialog = this.openFileDialog.bind(this);\r\n\t\tthis.onFilesAdded = this.onFilesAdded.bind(this);\r\n\t\tthis.onDragOver = this.onDragOver.bind(this);\r\n\t\tthis.onDragLeave = this.onDragLeave.bind(this);\r\n\t\tthis.onDrop = this.onDrop.bind(this);\r\n\t}\r\n\r\n\topenFileDialog() {\r\n\t\tif (this.props.disabled) return;\r\n\t\tthis.fileInputRef.current.click();\r\n\t}\r\n\r\n\tonFilesAdded(evt) {\r\n\t\tif (this.props.disabled) return;\r\n\t\tconst files = evt.target.files;\r\n\t\t\r\n\t\tif (this.props.onFilesAdded) {\r\n\t\t\tconst array = this.fileListToArray(files);\r\n\t\t\tthis.props.onFilesAdded(array);\r\n\t\t}\r\n\t}\r\n\r\n\tfileListToArray(list) {\r\n\t\tconst array = [];\r\n\t\tfor (var i = 0; i < list.length; i++) {\r\n\t\t\tarray.push(list.item(i));\r\n\t\t}\r\n\t\treturn array;\r\n\t}\r\n\r\n\tonDragOver(evt) {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tif (this.props.disabled) return;\r\n\r\n\t\tthis.setState({ hightlight: true });\r\n\t}\r\n\r\n\tonDragLeave() {\r\n\t\tthis.setState({ hightlight: false });\r\n\t}\r\n\r\n\tonDrop(event) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (this.props.disabled) return;\r\n\t\tconst files = event.dataTransfer.files;\r\n\t\tif (this.props.onFilesAdded) {\r\n\t\t\tconst array = this.fileListToArray(files);\r\n\t\t\tthis.props.onFilesAdded(array);\r\n\t\t}\r\n\t\tthis.setState({ hightlight: false });\r\n\t}\r\n\r\n\trender() {\r\n\t\t//console.log(\"***In Dropzone.js***\");\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tSelect\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport './Progress.css'\r\n\r\nexport class Progress extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\t\tthis.state = {}\r\n\t}\r\n\trender() {\r\n\t\t//console.log(\"***In Progress.js***\");\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport './Upload.css';\r\nimport './TabComponents/Documents.css'\r\nimport { Dropzone } from './Dropzone';\r\nimport { Progress } from './Progress';\r\nimport NumberFormat from 'react-number-format';\r\n\r\nexport class Upload extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n files: [],\r\n uploading: false,\r\n uploadProgress: {},\r\n successfullUploaded: false,\r\n filesdocumenttypes: [],\r\n validDocument: false,\r\n errorMessage: \"\",\r\n documentCountMessage: \"\",\r\n validFileTypes: []\r\n };\r\n\r\n this.onFilesAdded = this.onFilesAdded.bind(this);\r\n this.uploadFiles = this.uploadFiles.bind(this);\r\n this.sendRequest = this.sendRequest.bind(this);\r\n this.renderActions = this.renderActions.bind(this);\r\n }\r\n\r\n onFilesAdded(files) {\r\n let markedfiles = [];\r\n files.forEach((file, index) => {\r\n const date = new Date();\r\n let markedfile = file;\r\n markedfile.id = date.getTime() + index;\r\n markedfiles.push(markedfile);\r\n });\r\n\r\n if (markedfiles.length > 10) {\r\n this.setState({ documentCountMessage: \"You may not upload more than 10 documents\" })\r\n } else {\r\n this.setState({ documentCountMessage: \"\" })\r\n }\r\n this.setState(prevState => ({\r\n files: prevState.files.concat(markedfiles),\r\n }));\r\n }\r\n\r\n allowedFileType(fileType) {\r\n switch (fileType) {\r\n case 'text/plain':\r\n return true;\r\n case 'application/pdf':\r\n return true;\r\n case 'application/msword':\r\n return true;\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n return true;\r\n case 'application/vnd.ms-excel':\r\n return true;\r\n case 'image/bmp':\r\n return true;\r\n case 'image/jpeg':\r\n return true;\r\n case 'image/gif':\r\n return true;\r\n case 'image/tiff':\r\n return true;\r\n case 'image/png':\r\n return true;\r\n case 'image/rtf':\r\n return true;\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n fileListToArray(list) {\r\n const array = [];\r\n for (var i = 0; i < list.length; i++) {\r\n array.push(list.item(i));\r\n }\r\n return array;\r\n }\r\n\r\n handleDocumentTypeChange = (rowId, event) => {\r\n let filesdocumenttypes = [...this.state.filesdocumenttypes];\r\n filesdocumenttypes[rowId] = event.target.value;\r\n this.setState({ filesdocumenttypes });\r\n };\r\n\r\n clearFiles = (e) => {\r\n e.preventDefault();\r\n this.setState({ files: [], successfullUploaded: false , errorMessage: \"\"})\r\n }\r\n\r\n renderProgress(file) {\r\n const uploadProgress = this.state.uploadProgress[file.name];\r\n if (this.state.uploading || this.state.successfullUploaded) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n renderActions() {\r\n if (this.state.successfullUploaded) {\r\n return (\r\n
\r\n \r\n Clear\r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n removeFile(file) {\r\n const files = this.state.files.filter(r => r !== file);\r\n this.setState({ files: files });\r\n }\r\n\r\n uploadFiles = (e) => {\r\n e.preventDefault();\r\n try {\r\n if (this.state.files.length > 10) {\r\n this.setState({ documentCountMessage: \"You may not upload more than 10 documents\" });\r\n } else {\r\n this.setState({ documentCountMessage: \"\" });\r\n this.setState({ uploadProgress: {}, uploading: true, validDocument: true, errorMessage: \"\" });\r\n this.state.files.forEach(file => {\r\n if (file.size > 200485760) {\r\n this.setState({ validDocument: false });\r\n this.setState({ showErrors: true });\r\n } else {\r\n this.setState({ validDocument: true });\r\n this.setState({ showErrors: false });\r\n this.sendRequest(file);\r\n }\r\n });\r\n this.setState({ successfullUploaded: true, uploading: false });\r\n }\r\n } catch (e) {\r\n this.setState({ successfullUploaded: false, uploading: false });\r\n }\r\n }\r\n\r\n sendRequest(file) {\r\n this.setState({ errorMessage: \"\" });\r\n //console.log(\"ApplicationDocument/Upload/\");\r\n const fd = new FormData();\r\n fd.append('document', file);\r\n //console.log(\"file\",file);\r\n if (this.props.uploadappid) {\r\n fetch(this.props.url + \"ApplicationDocument/Upload/\" + this.props.uploadappid, {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n },\r\n body: fd\r\n })\r\n .then((response) => {\r\n if (response.status < 400) {\r\n response.json().then(result => this.props.onFilesAdded(result)).catch(error => {\r\n console.log(\"Error from ApplicationDocumentUpload1\", error);\r\n })\r\n } else {\r\n throw response;\r\n }\r\n })\r\n .catch(err => {\r\n err.json().then(error => {\r\n if (error.statusCode >= 400) {\r\n this.setState({ validDocument: false });\r\n this.setState({ errorMessage: \"There was an error uploading the document: \" + error.value });\r\n console.log(\"Error uploading document:\", error)\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n //console.log(\"***In Upload.js***\");\r\n //const { url } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.renderActions()}\r\n
\r\n
\r\n {this.state.documentCountMessage.length > 0 &&\r\n {this.state.documentCountMessage}\r\n }\r\n {this.state.errorMessage.length > 0 &&\r\n {this.state.errorMessage}\r\n }\r\n \r\n {this.state.files.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {this.state.files.map(file => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
Document NameDocument Size (MB)
{file.name}\r\n {this.renderProgress(file)}\r\n {file.size > 200485760 &&\r\n
\r\n \r\n Document size is over the allowed limit.\r\n \r\n
\r\n }\r\n {this.allowedFileType(file.type) === false &&\r\n
\r\n \r\n Document type is not allowed.\r\n \r\n
\r\n }\r\n
\r\n \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, { Component } from \"react\";\r\n\r\nclass DocumentTypes extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n documenttypes: [], \r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n\r\n fetch(this.props.url + 'LUDocumentTypes')\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n if (this._isMounted) {\r\n let documentTypesFromApi = response.map(documentype => {\r\n return { value: documentype.documentTypeId, label: documentype.description }\r\n });\r\n\r\n this.setState({ documenttypes: documentTypesFromApi });\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n render() {\r\n //console.log(\"***In DocumentTypes.jsx***\");\r\n const { documenttypes } = this.state;\r\n const { value } = this.props;\r\n const { withRowId } = this.props;\r\n\r\n let documentTypesList = documenttypes.length > 0\r\n && documenttypes.map((documenttype) => { \r\n return (\r\n \r\n )\r\n }, this);\r\n\r\n return (\r\n
\r\n this.props.onDocumentTypeChange((this.props.id), evt) : this.props.onDocumentTypeChange)}\r\n disabled={this.props.closed}\r\n >\r\n \r\n {documentTypesList}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default DocumentTypes;","import React, { Component } from \"react\";\r\nimport DocumentTypes from \"./WidgetComponents/DocumentTypes\";\r\n\r\nclass DocumentRow extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n id: 0,\r\n document: \"\",\r\n locationLink: \"\",\r\n documenttype: 0,\r\n documentErrors: \"\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const date = new Date();\r\n\r\n if (this.props.rowId > 0) {\r\n fetch(this.props.url + 'ApplicationDocument/' + this.props.rowId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(row => {\r\n this.setState({\r\n id: row.applicationDocumentId,\r\n document: row.documentName,\r\n locationLink: row.locationLink,\r\n documenttype: row.documentTypeId,\r\n })\r\n this.props.onRowChange(this.props.rowId, {\r\n id: row.applicationDocumentId,\r\n document: row.documentName,\r\n locationLink: row.locationLink,\r\n documenttype: row.documentTypeId,\r\n })\r\n }\r\n ).catch(error => {\r\n console.log(error);\r\n });\r\n } else {\r\n this.setState({\r\n id: date.getTime(),\r\n document: this.props.documentId,\r\n locationlink: \"\",\r\n documenttype: 0,\r\n })\r\n this.props.onRowChange(this.props.rowId, {\r\n id: date.getTime(),\r\n document: \"0\",\r\n locationlink: \"\",\r\n documenttype: 0,\r\n })\r\n }\r\n }\r\n\r\n handleDocumentChange(e) {\r\n const date = new Date();\r\n this.setState({ document: parseInt(e.target.value), id: date.getTime() });\r\n this.props.onRowChange(this.props.rowId, {\r\n document: parseInt(e.target.value), id: date.getTime()\r\n })\r\n };\r\n\r\n handleDocumentTypeChange(e) {\r\n this.setState({ documenttype: parseInt(e.target.value) });\r\n this.props.onRowChange(this.props.rowId, {\r\n documenttype: parseInt(e.target.value)\r\n })\r\n };\r\n\r\n\r\n\r\n render() {\r\n const { id } = this.state;\r\n const { document } = this.state;\r\n const { documenttype } = this.state;\r\n const { locationLink } = this.state;\r\n const { url } = this.props;\r\n // const { showErrors } = this.props;\r\n //console.log(\"***In DocumentRow.jsx***\");\r\n return (\r\n \r\n {document}\r\n \r\n \r\n \r\n\r\n {this.props.showDelete &&\r\n \r\n \r\n Delete\r\n\t\t\t\t\t\t\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DocumentRow;","import React, { Component } from \"react\";\r\nimport { Upload } from '../Upload';\r\nimport DocumentRow from './RowComponents/DocumentRow';\r\n\r\nexport class Documents extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n appid: this.props.appId,\r\n url: this.props.url,\r\n documentrows: [],\r\n documentrowsData: [],\r\n areDocumentsValid: true,\r\n saveStatusMessage: null,\r\n documentErrors: \"\",\r\n DocumentTypeMapExists: false,\r\n DocumentTypeFundingExists: false,\r\n DocumentTypeRankingExists: false,\r\n errors: {\r\n DocumentTypeSelected: \"\",\r\n DocumentTypeMap: \"\",\r\n DocumentTypeFunding: \"\",\r\n DocumentTypeRanking: \"\",\r\n }\r\n };\r\n\r\n this.onFilesAdded = this.onFilesAdded.bind(this);\r\n }\r\n\r\n componentDidMount = () => {\r\n this.getDocuments();\r\n }\r\n\r\n getDocuments() {\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'ApplicationDocument/ApplicationId/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateDocumentRows(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n onFilesAdded(file) {\r\n let documentrows = [...this.state.documentrows];\r\n let documentrowsData = [...this.state.documentrowsData];\r\n\r\n documentrows.push(file.applicationDocumentId); \r\n documentrowsData.push({\r\n id: file.applicationDocumentId,\r\n document: file,\r\n locationLink: file.locationLink,\r\n documenttype: 0,\r\n });\r\n\r\n this.setState({ documentrows });\r\n this.setState({ documentrowsData });\r\n }\r\n\r\n handleFilesUploaded() {\r\n let documentrows = [];\r\n\r\n documentrows.forEach((documentrow, index) => {\r\n const date = new Date();\r\n let markedfile = documentrow;\r\n markedfile.id = date.getTime() + index;\r\n documentrows.push(markedfile);\r\n });\r\n this.setState(prevState => ({\r\n documentrows: prevState.documentrows.concat(documentrows)\r\n }));\r\n\r\n this.setState({ saveStatusMessage: '' });\r\n }\r\n\r\n populateDocumentRows(data) {\r\n let documentrows = [];\r\n let documentrowsData = [];\r\n for (let entry in data) {\r\n documentrows.push(data[entry].applicationDocumentId);\r\n documentrowsData.push({\r\n id: data[entry].applicationDocumentId,\r\n document: \"\",\r\n locationLink: \"\",\r\n documenttype: 0,\r\n });\r\n }\r\n this.setState({ documentrows });\r\n this.setState({ documentrowsData });\r\n }\r\n\r\n handleDocumentRowChange = (rowId, data) => {\r\n let documentrowsData = [...this.state.documentrowsData];\r\n let i = 0;\r\n\r\n const ii = documentrowsData.length;\r\n for (i; i < ii; i++) if (documentrowsData[i].id === rowId) break;\r\n\r\n for (let field in data) { documentrowsData[i][field] = data[field]; }\r\n this.setState({ documentrowsData });\r\n this.setState({ saveStatusMessage: '' });\r\n };\r\n\r\n handleRemoveDocument = rowId => {\r\n const documentrows = this.state.documentrows.filter(r => r !== rowId);\r\n const documentrowsData = this.state.documentrowsData.filter(r => r.id !== rowId);\r\n\r\n if (rowId > 0) {\r\n this.deleteDocument(rowId);\r\n }\r\n\r\n this.setState({ documentrows });\r\n this.setState({ documentrowsData });\r\n };\r\n\r\n deleteDocument(id) {\r\n fetch(this.props.url + 'ApplicationDocument/' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n\r\n handleDocumentValidation() {\r\n this.setState({ showErrors: false });\r\n this.setState({ statusMessage: null });\r\n\r\n let errors = {\r\n DocumentTypeSelected: \"\",\r\n DocumentTypeMap: \"\",\r\n DocumentTypeFunding: \"\",\r\n DocumentTypeRanking: \"\",\r\n };\r\n\r\n let docs = [...this.state.documentrowsData];\r\n let docIsValid = true;\r\n for (let doc in docs) {\r\n if ((docs[doc].documenttype === 0) || (docs[doc].documenttype === null)) {\r\n this.setState({\r\n areDocumentsValid: false,\r\n documentErrors: \"All documents must have a document type selected \",\r\n });\r\n errors[\"DocumentTypeSelected\"] = \"All documents must have a document type selected\";\r\n this.setState({ showErrors: true })\r\n docIsValid = false;\r\n }\r\n };\r\n\r\n this.setState({ errors: errors });\r\n return docIsValid;\r\n }\r\n\r\n appNext = (e) => {\r\n // console.log(\"documents form being submitted\"); \r\n e.preventDefault();\r\n if (this.handleDocumentValidation()) {\r\n let docs = [...this.state.documentrowsData];\r\n for (let doc in docs) {\r\n if (docs[doc].id > 0) {\r\n\r\n fetch(this.props.url +\r\n 'ApplicationDocument/ApplicationDocumentType/' +\r\n docs[doc].id + '/' + docs[doc].documenttype, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n }\r\n this.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n this.setState({ showErrors: true })\r\n }\r\n };\r\n\r\n render() {\r\n\r\n const style = { color: '#0062cc' };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
**File upload size limit: 10 MB each
\r\n
**Allowed file types extensions: .txt,.rtf,.pdf,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.tif,.gif,.bmp
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.state.documentrows.length > 0 &&\r\n \r\n }\r\n \r\n \r\n \r\n {this.state.documentrows.map(row => (\r\n 0 ? true : false)}\r\n removeRow={this.handleRemoveDocument.bind(this, row)}\r\n appId={this.props.appId}\r\n url={this.props.url}\r\n documentId={this.state.documentrowsData.map(doc => (doc.document))}\r\n closed={this.props.closed}\r\n />\r\n ))}\r\n \r\n
Document NameDocument Type (*A Map, Funding Letter, and Ranking Letter are required when submitting application)
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
{this.state.errors.DocumentTypeSelected.length > 0 &&\r\n {this.state.errors.DocumentTypeSelected}}\r\n
\r\n
{this.state.errors.DocumentTypeFunding.length > 0 &&\r\n {this.state.errors.DocumentTypeFunding}}\r\n
\r\n
{this.state.errors.DocumentTypeMap.length > 0 &&\r\n {this.state.errors.DocumentTypeMap}}\r\n
\r\n
{this.state.errors.DocumentTypeRanking.length > 0 &&\r\n {this.state.errors.DocumentTypeRanking}}\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 & Continue\r\n\t\t\t\t\t\t\t\t\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport class DescBenCost extends Component {\r\n\tstate = {\r\n\t\tsaveStatusMessage: null,\r\n\t\tdescriptionCharCount: 0, \r\n\t\tbenefitCharCount: 0, \r\n\t\tcostCharCount: 0,\r\n\t\tdescription: \"\",\r\n\t\tbenefit: \"\",\r\n\t\tcost: \"\",\r\n\t\terrors: {\r\n\t\t\tdescription: \"\",\r\n\t\t\tbenefit: \"\",\r\n\t\t\tcost: \"\", \r\n\t\t\tdescriptionCharCount: 0, \r\n\t\t\tbenefitCharCount: 0, \r\n\t\t\tcostCharCount: 0, \r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.handleChange = this.handleChange.bind(this);\r\n\t\tif (this.props.appId) {\r\n\t\t\tfetch(this.props.url + 'Application/' + this.props.appId)\r\n\t\t\t\t.then((response) => {\r\n\t\t\t\t\tif (response.status < 400 && response.status !== 204) {\r\n\t\t\t\t\t\tresponse.json().then(result => this.populateInfo(result)).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tpopulateInfo(data) {\r\n\t\tconsole.log(\"DescBenCost\",data);\r\n\t\tif (data.ProjectDescription !== null && data.benefit !== undefined) {\r\n\t\t\tthis.setState({ description: data.projectDescription });\r\n\t\t\tthis.setState({ descriptionCharCount: data.projectDescription.length });\r\n\t\t}\r\n\t\tif (data.benefit !== null && data.benefit !== undefined) {\r\n\t\t\tthis.setState({ benefit: data.benefit });\r\n\t\t\tthis.setState({ benefitCharCount: data.benefit.length });\r\n\t\t}\r\n\t\tif (data.Cost !== null && data.benefit !== undefined) {\r\n\t\t\tthis.setState({ cost: data.cost });\r\n\t\t\tthis.setState({ costCharCount: data.cost.length });\r\n\t\t}\r\n\t}\r\n\r\n\thandleChange(e) {\r\n\t\tconst target = e.target;\r\n\t\tconst name = target.name;\r\n\t\tconst value = target.value;\r\n\t\tthis.setState({ [name]: value });\r\n\t\tthis.setState({ saveStatusMessage: null });\r\n\r\n\t\tlet errors = {\r\n\t\t\tdescription: \"\",\r\n\t\t\tbenefit: \"\",\r\n\t\t\tcost: \"\"\r\n\t\t};\r\n\r\n\t\tif (name === \"description\") {\r\n\t\t\tthis.setState({ descriptionCharCount: target.value.length })\r\n\t\t\terrors[\"description\"] = \"\";\r\n\t\t}\r\n\r\n\t\tif (name === \"benefit\") {\r\n\t\t\tthis.setState({ benefitCharCount: target.value.length })\r\n\t\t\terrors[\"benefit\"] = \"\";\r\n\t\t}\r\n\r\n\t\tif (name === \"cost\") {\r\n\t\t\tthis.setState({ costCharCount: target.value.length })\r\n\t\t\terrors[\"cost\"] = \"\";\r\n\t\t}\r\n\t\tthis.setState({ errors: errors });\r\n\t};\r\n\r\n\tappNext = (e) => {\r\n\t\te.preventDefault();\r\n\r\n\t\tlet data = {\r\n\t\t\tApplicationId: this.props.appId,\r\n\t\t\tProjectDescription: this.state.description,\r\n\t\t\tBenefit: this.state.benefit,\r\n\t\t\tCost: this.state.cost,\r\n\t\t}\r\n\r\n\t\tif (this.handleValidation(data)) {\r\n\t\t\tfetch(this.props.url + 'Application/ApplicationDescCostBenefit/' + this.props.appId, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify(data)\r\n\t\t\t}).catch(error => {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t\t\tthis.props.setTab('Description/Benefit/Cost');\r\n\t\t\tthis.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n\t\t}\r\n\t};\r\n\r\n\thandleValidation(data) {\r\n\t\tlet formIsValid = true;\r\n\t\tlet errors = {\r\n\t\t\tdescription: \"\",\r\n\t\t\tbenefit: \"\",\r\n\t\t\tcost: \"\"\r\n\t\t};\r\n\r\n\t\tif (!data.ProjectDescription) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"description\"] = \"Cannot be empty\";\r\n\t\t} else if (data.ProjectDescription.length > 4000) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"description\"] = \"Cannot be more than 4000 characters. Current count is \" + data.ProjectDescription.length + \".\";\r\n\t\t} else {\r\n\t\t\terrors[\"description\"] = \"\";\r\n\t\t}\r\n\r\n\t\tif (!data.Benefit) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"benefit\"] = \"Cannot be empty\";\r\n\t\t} else if (data.Benefit.length > 4000) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"benefit\"] = \"Cannot be more than 4000 characters. Current count is \" + data.Benefit.length + \".\";\r\n\t\t} else {\r\n\t\t\terrors[\"benefit\"] = \"\";\r\n }\r\n\t\t\r\n\t\tif (!data.Cost) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"cost\"] = \"Cannot be empty\";\r\n\t\t} else if (data.Cost.length > 4000) {\r\n\t\t\tformIsValid = false;\r\n\t\t\terrors[\"cost\"] = \"Cannot be more than 4000 characters. Current count is \" + data.Cost.length + \".\";\r\n\t\t} else {\r\n\t\t\terrors[\"cost\"] = \"\";\r\n }\r\n\r\n\t\tthis.setState({ errors: errors });\r\n\t\treturn formIsValid;\r\n\t}\r\n\r\n\trender() {\r\n\t\t\r\n\t\tconst shrinkCharCount = { fontSize: '88%' }\r\n\t\t\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.errors.description.length > 0 &&\r\n\t\t\t\t\t\t\t\t{this.state.errors.description}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.errors.benefit.length > 0 &&\r\n\t\t\t\t\t\t\t\t{this.state.errors.benefit}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.errors.cost.length > 0 &&\r\n\t\t\t\t\t\t\t\t{this.state.errors.cost}}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSave & Continue\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\t\r\n\t\t\t\t\t
\t\t\t\t\r\n\t\t\t\t
\t\t\t\r\n\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport class CompEfforts extends Component {\r\n state = {\r\n errors: { effort: \"\" },\r\n saveStatusMessage: null,\r\n effortCharCount: \"0\",\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n populateInfo(data) {\r\n if (data.complementaryEfforts !== undefined && data.complementaryEfforts !== null) {\r\n this.setState({ effort: data.complementaryEfforts });\r\n this.setState({ effortCharCount: data.complementaryEfforts.length });\r\n } else {\r\n this.setState({ effort: \"\"});\r\n this.setState({ effortCharCount: 0});\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateInfo(result));\r\n }\r\n }\r\n\r\n handleChange(e) {\r\n const target = e.target;\r\n const name = target.name;\r\n const value = target.value;\r\n this.setState({ [name]: value });\r\n this.setState({ saveStatusMessage: null });\r\n\r\n if (name === \"effort\") {\r\n this.setState({ effortCharCount: target.value.length })\r\n }\r\n }\r\n\r\n appNext = (e) => {\r\n e.preventDefault();\r\n\r\n let data = {\r\n ApplicationId: this.props.appId,\r\n ComplementaryEfforts: this.state.effort\r\n }\r\n\r\n if (this.handleValidation(data)) {\r\n fetch(this.props.url + 'Application/ComplementaryEfforts/' + this.props.appId, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n this.props.setTab('Complementary Efforts');\r\n this.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n }\r\n };\r\n\r\n handleValidation(data) {\r\n let errors = { effort: \"\" };\r\n let formIsValid = true;\r\n this.setState({ statusMessage: null })\r\n\r\n // effort\r\n if (!data.ComplementaryEfforts) {\r\n formIsValid = false;\r\n errors[\"effort\"] = \"Cannot be empty\";\r\n\r\n }\r\n\r\n // effort\r\n if (data.ComplementaryEfforts.length > 4000) {\r\n formIsValid = false;\r\n errors[\"effort\"] = \"Cannot be more than 4000 characters. Current count is \" + data.ComplementaryEfforts.length + \".\";\r\n }\r\n\r\n this.setState({ errors: errors });\r\n return formIsValid;\r\n }\r\n\r\n render() {\r\n\r\n const shrinkCharCount = { fontSize: '88%' }\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 {this.state.errors.effort.length > 0 &&\r\n {this.state.errors.effort}}\r\n
\r\n
\r\n
\r\n
\r\n
\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 & Continue\r\n\t\t\t\t\t\t\t\t\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport NumberFormat from 'react-number-format';\r\n\r\nclass FundingRow extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.updateTotal = this.updateTotal.bind(this);\r\n\r\n this.state = {\r\n FundingSource: \"\",\r\n PriorFunding: 0,\r\n CurrentFunding: 0,\r\n CurrentPlusOneFunding: 0,\r\n FutureFunding: 0,\r\n RowTotalFunding: 0,\r\n FundingSourceErrors: \"\",\r\n PriorFundingErrors: \"\",\r\n CurrentFundingErrors: \"\",\r\n CurrentPlusOneFundingErrors: \"\",\r\n FutureFundingErrors: \"\",\r\n };\r\n }\r\n // if have an appId? alway gets here with one unless in dev or logic is broken.\r\n componentDidMount() {\r\n this._isMounted = true;\r\n\r\n if (this.props.rowId > 1) {\r\n //console.log(this.props.url + 'ApplicationAdditionalFundings/' + this.props.rowId);\r\n fetch(this.props.url + 'ApplicationAdditionalFundings/' + this.props.rowId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(row => {\r\n if (this._isMounted) {\r\n this.setState({\r\n FundingSource: row.fundingSource,\r\n PriorFunding: Number(row.priorFunding),\r\n CurrentFunding: Number(row.currentFunding),\r\n CurrentPlusOneFunding: Number(row.currentPlusOneFunding),\r\n FutureFunding: Number(row.futureFunding),\r\n RowTotalFunding: (this.state.PriorFunding + this.state.CurrentFunding + this.state.CurrentPlusOneFunding + this.state.FutureFunding),\r\n });\r\n this.props.onRowChange(this.props.rowId, {\r\n FundingSource: row.fundingSource,\r\n PriorFunding: Number(row.priorFunding),\r\n CurrentFunding: Number(row.currentFunding),\r\n CurrentPlusOneFunding: Number(row.currentPlusOneFunding),\r\n FutureFunding: Number(row.futureFunding),\r\n RowTotalFunding: (this.state.PriorFunding + this.state.CurrentFunding + this.state.CurrentPlusOneFunding + this.state.FutureFunding),\r\n })\r\n this.updateTotal();\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n handleChange(e) {\r\n var value;\r\n\r\n if (e.target.name !== 'FundingSource' && e.target.value.trim()) {\r\n value = e.target.value.toString();\r\n value = parseInt((value.replace(/,/g, \"\")), 10);\r\n\r\n } else {\r\n value = e.target.value;\r\n }\r\n\r\n this.setState({ [e.target.name]: value });\r\n\r\n if (this.state.FundingSource === '') {\r\n this.setState({\"FundingSourceErrors\": \"Cannot be empty\"})\r\n this.props.isValid(false);\r\n } else if (this.state.FundingSource.length > 100) {\r\n this.setState({\"FundingSourceErrors\": \"Cannot be greater than 100 characters. \"})\r\n this.props.isValid(false);\r\n } else {\r\n this.setState({\"FundingSourceErrors\": \"\"})\r\n this.props.isValid(true);\r\n }\r\n\r\n this.updateTotal();\r\n\r\n this.props.onRowChange(this.props.rowId, { [e.target.name]: value })\r\n }\r\n\r\n updateTotal() {\r\n var prior = Number(this.state.PriorFunding);\r\n var current = Number(this.state.CurrentFunding);\r\n var plus = Number(this.state.CurrentPlusOneFunding);\r\n var future = Number(this.state.FutureFunding);\r\n \r\n this.setState({ RowTotalFunding: prior + current + plus + future });\r\n }\r\n\r\n render() {\r\n\r\n const { showErrors } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.FundingSourceErrors.length > 0 && showErrors &&\r\n {this.state.FundingSourceErrors}}\r\n \r\n \r\n {\r\n const {value } = values;\r\n this.setState({ PriorFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.PriorFundingErrors.length > 0 && showErrors &&\r\n {this.state.PriorFundingErrors}}\r\n \r\n \r\n {\r\n const { value } = values;\r\n this.setState({ CurrentFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.CurrentFundingErrors.length > 0 && showErrors &&\r\n {this.state.CurrentFundingErrors}}\r\n \r\n \r\n {\r\n const { value } = values;\r\n this.setState({ CurrentPlusOneFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.CurrentPlusOneFundingErrors.length > 0 && showErrors &&\r\n {this.state.CurrentPlusOneFundingErrors}}\r\n \r\n \r\n {\r\n const { value } = values;\r\n this.setState({ FutureFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.FutureFundingErrors.length > 0 && showErrors &&\r\n {this.state.FutureFundingErrors}}\r\n \r\n \r\n {\r\n const { value } = values;\r\n this.setState({ RowTotalFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n \r\n {this.props.rowCount > 0 &&\r\n \r\n \r\n Delete\r\n\t\t\t\t\t\t\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FundingRow;","import React, { Component } from \"react\";\r\nimport FundingRow from \"./RowComponents/FundingRow\";\r\nimport NumberFormat from \"react-number-format\";\r\n\r\nexport class Funding extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const date = new Date();\r\n\r\n this.state = {\r\n ASPriorFunding: 0,\r\n ASCurrentFunding: 0,\r\n ASCurrentPlusOneFunding: 0,\r\n ASFutureFunding: 0,\r\n DSPriorFunding: 0,\r\n DSCurrentFunding: 0,\r\n DSCurrentPlusOneFunding: 0,\r\n DSFutureFunding: 0,\r\n rows: [],\r\n errors: {\r\n ASPriorFunding: 0,\r\n ASCurrentFunding: 0,\r\n ASCurrentPlusOneFunding: 0,\r\n ASFutureFunding: 0,\r\n DSPriorFunding: 0,\r\n DSCurrentFunding: 0,\r\n DSCurrentPlusOneFunding: 0,\r\n DSFutureFunding: 0,\r\n id: -1,\r\n ASRowTotalFunding: 0,\r\n DSRowTotalFunding: 0,\r\n PriorFundingTotal: 0,\r\n CurrentFundingTotal: 0,\r\n CurrentPlusOneFundingTotal: 0,\r\n FutureFundingTotal: 0\r\n },\r\n errorsAddFunding: {\r\n PriorFunding: 0,\r\n CurrentFunding: 0,\r\n CurrentPlusOneFunding: 0,\r\n FutureFunding: 0,\r\n },\r\n rowsData: [],\r\n areAdditionsValid: true, // false default but true in populateFunding?\r\n saveStatusMessage: null,\r\n }\r\n this.state.showErrors = false;\r\n this.state.FY = date.getFullYear() + 2;\r\n this.handleChange = this.handleChange.bind(this);\r\n this.updateTotal = this.updateTotal.bind(this);\r\n\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'ApplicationMainFundings/ApplicationId/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateFunding(result[0])).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n\r\n populateFunding(funding) {\r\n if (funding !== undefined) {\r\n this.setState({\r\n ASPriorFunding: funding.asPriorFunding,\r\n ASCurrentFunding: funding.asCurrentFunding,\r\n ASCurrentPlusOneFunding: funding.asCurrentPlusOneFunding,\r\n ASFutureFunding: funding.asFutureFunding,\r\n DSPriorFunding: funding.dsPriorFunding,\r\n DSCurrentFunding: funding.dsCurrentFunding,\r\n DSCurrentPlusOneFunding: funding.dsCurrentPlusOneFunding,\r\n DSFutureFunding: funding.dsFutureFunding,\r\n id: funding.applicationMainFundingId,\r\n // ASRowTotalFunding: (parseInt(funding.asCurrentFunding) + parseInt(funding.asCurrentFunding) + parseInt(funding.asCurrentPlusOneFunding) + parseInt(funding.asFutureFunding)),\r\n // DSRowTotalFunding: 0,\r\n });\r\n this.updateTotal();\r\n }\r\n this.queryFundingRows();\r\n }\r\n\r\n queryFundingRows() {\r\n fetch(this.props.url + 'ApplicationAdditionalFundings/ApplicationId/' + this.props.appId)\r\n .then((response) => {\r\n if (response.status < 400 && response.status !== 204) {\r\n response.json().then(result => this.populateFundingRows(result)).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n })\r\n }\r\n\r\n populateFundingRows(data) {\r\n let rows = [];\r\n let rowsData = [];\r\n for (let entry in data) {\r\n rows.push(data[entry].applicationAdditionalFundingId);\r\n rowsData.push({\r\n rowId: data[entry].applicationAdditionalFundingId,\r\n FundingSource: \"\",\r\n PriorFunding: 0,\r\n CurrentFunding: 0,\r\n CurrentPlusOneFunding: 0,\r\n FutureFunding: 0,\r\n });\r\n }\r\n this.setState({ rows });\r\n this.setState({ rowsData });\r\n }\r\n\r\n handleChange(e) {\r\n const parsed = parseInt(e.target.value.replace(/,/g, ''), 10);\r\n if (e.target.value.trim() === '') {\r\n this.setState({ [e.target.name + \"Errors\"]: \"Cannot be empty\" })\r\n } else if (isNaN(parsed)) {\r\n this.setState({ [e.target.name + \"Errors\"]: \"Invalid Entry\" })\r\n } else {\r\n this.setState({ [e.target.name + \"Errors\"]: \"\" })\r\n }\r\n\r\n this.setState({ [e.target.name]: Number(parsed) });\r\n this.updateTotal();\r\n this.setState({ saveStatusMessage: null });\r\n }\r\n\r\n updateTotal() {\r\n var asprior = Number(this.state.ASPriorFunding);\r\n var ascurrent = Number(this.state.ASCurrentFunding);\r\n var asplus = Number(this.state.ASCurrentPlusOneFunding);\r\n var asfuture = Number(this.state.ASFutureFunding);\r\n var dsprior = Number(this.state.DSPriorFunding);\r\n var dscurrent = Number(this.state.DSCurrentFunding);\r\n var dsplus = Number(this.state.DSCurrentPlusOneFunding);\r\n var dsfuture = Number(this.state.DSFutureFunding);\r\n\r\n this.setState({ ASRowTotalFunding: asprior + ascurrent + asplus + asfuture });\r\n this.setState({ DSRowTotalFunding: dsprior + dscurrent + dsplus + dsfuture });\r\n }\r\n\r\n handleRowInputChange = (rowId, data) => {\r\n let rowsData = [...this.state.rowsData];\r\n let i = 0;\r\n const ii = rowsData.length;\r\n for (i; i < ii; i++) if (rowsData[i].rowId === rowId) break;\r\n\r\n for (let field in data) {\r\n rowsData[i][field] = data[field];\r\n }\r\n\r\n this.setState({ rowsData });\r\n };\r\n\r\n handleFundingValidation = (areAdditionsValid) => {\r\n this.setState({ areAdditionsValid });\r\n this.setState({ showErrors: areAdditionsValid })\r\n }\r\n\r\n appendRow = () => {\r\n let rows = [...this.state.rows];\r\n let rowsData = [...this.state.rowsData];\r\n\r\n const date = new Date();\r\n rows.push(-1 * date.getTime());\r\n rowsData.push({\r\n rowId: -1 * date.getTime(),\r\n FundingSource: \"\",\r\n PriorFunding: 0,\r\n CurrentFunding: 0,\r\n CurrentPlusOneFunding: 0,\r\n FutureFunding: 0,\r\n });\r\n this.setState({ rows });\r\n this.setState({ rowsData });\r\n this.setState({ areAdditionsValid: false });\r\n this.setState({ saveStatusMessage: null });\r\n };\r\n\r\n handleRowDelete = rowId => {\r\n const rows = this.state.rows.filter(r => r !== rowId);\r\n const rowsData = this.state.rowsData.filter(r => r.rowId !== rowId);\r\n\r\n if (rowId > 0) {\r\n this.delete(rowId);\r\n }\r\n\r\n this.setState({ rows });\r\n this.setState({ rowsData });\r\n };\r\n\r\n delete(id) {\r\n fetch(this.props.url + 'ApplicationAdditionalFundings/' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n }\r\n\r\n getValue(val) {\r\n var value;\r\n if (val) {\r\n value = val.toString();\r\n value = parseInt((value.replace(/,/g, \"\")), 10);\r\n } else {\r\n value = val;\r\n }\r\n return parseInt(value);\r\n }\r\n\r\n appNext = (e) => {\r\n e.preventDefault();\r\n\r\n const date = new Date();\r\n\r\n let mainfund = {\r\n ApplicationMainFundingId: null,\r\n ApplicationId: this.props.appId,\r\n ASPriorFunding: this.getValue(this.state.ASPriorFunding),\r\n ASCurrentFunding: this.getValue(this.state.ASCurrentFunding),\r\n ASCurrentPlusOneFunding: this.getValue(this.state.ASCurrentPlusOneFunding),\r\n ASFutureFunding: this.getValue(this.state.ASFutureFunding),\r\n DSPriorFunding: this.getValue(this.state.DSPriorFunding),\r\n DSCurrentFunding: this.getValue(this.state.DSCurrentFunding),\r\n DSCurrentPlusOneFunding: this.getValue(this.state.DSCurrentPlusOneFunding),\r\n DSFutureFunding: this.getValue(this.state.DSFutureFunding),\r\n ApplicationMainFundingCustom1: null, //this.state.ApplicationMainFundingCustom1, //string\r\n ApplicationMainFundingCustom2: null, //this.state.ApplicationMainFundingCustom2,\r\n ApplicationMainFundingCustom3: null, //this.state.ApplicationMainFundingCustom3,\r\n ApplicationMainFundingCustom4: null, //this.state.ApplicationMainFundingCustom4,\r\n ApplicationMainFundingCustom5: null, //this.state.ApplicationMainFundingCustom5,\r\n LastUpdateUserId: null, //Int32?\r\n LastUpdateDate: date, //DateTime?\r\n }\r\n\r\n let additionalfunding = {\r\n rows: this.state.rowsData\r\n }\r\n\r\n const areMainFundsValid = this.handleValidation(mainfund);\r\n const areAddFundsValid = this.handleAddFundValidation(additionalfunding);\r\n //const areAddFundsValid = true; \r\n\r\n //TODO - need to set \"get\" the rows that have been created so that we can set the state.id > 0 so it won't insert multiple rows\r\n if (areMainFundsValid && areAddFundsValid && this.props.appId > 0) {\r\n if (this.state.id > 0) {\r\n // set the id and update the funding entry\r\n mainfund.ApplicationMainFundingId = this.state.id;\r\n\r\n fetch(this.props.url + 'ApplicationMainFundings/' + this.state.id, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(mainfund)\r\n });\r\n } else {\r\n // otherwise create a new funding entry\r\n fetch(this.props.url + 'ApplicationMainFundings/', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(mainfund)\r\n });\r\n }\r\n\r\n for (let af in additionalfunding.rows) {\r\n let addfund = {\r\n ApplicationAdditionalFundingId: null, //Int32?\r\n ApplicationId: this.props.appId,\r\n FundingSource: additionalfunding.rows[af].FundingSource, //string\r\n PriorFunding: this.getValue(additionalfunding.rows[af].PriorFunding),\r\n CurrentFunding: this.getValue(additionalfunding.rows[af].CurrentFunding),\r\n CurrentPlusOneFunding: this.getValue(additionalfunding.rows[af].CurrentPlusOneFunding),\r\n FutureFunding: this.getValue(additionalfunding.rows[af].FutureFunding.toLocaleString()),\r\n ApplicationAdditionalFundingCustom1: null, //this.state.ApplicationAdditionalFundingCustom1, //string\r\n ApplicationAdditionalFundingCustom2: null, //this.state.ApplicationAdditionalFundingCustom2,\r\n ApplicationAdditionalFundingCustom3: null, //this.state.ApplicationAdditionalFundingCustom3,\r\n ApplicationAdditionalFundingCustom4: null, //this.state.ApplicationAdditionalFundingCustom4,\r\n ApplicationAdditionalFundingCustom5: null, //this.state.ApplicationAdditionalFundingCustom5,\r\n LastUpdateUserId: null, //Int32?\r\n LastUpdateDate: date //DateTime?\r\n }\r\n\r\n if (additionalfunding.rows[af].rowId > 0) {\r\n // set the id and update the funding entry\r\n addfund.ApplicationAdditionalFundingId = additionalfunding.rows[af].rowId;\r\n\r\n fetch(this.props.url + 'ApplicationAdditionalFundings/' + additionalfunding.rows[af].rowId, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(addfund)\r\n });\r\n } else {\r\n // otherwise create a new funding entry\r\n fetch(this.props.url + 'ApplicationAdditionalFundings', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(addfund)\r\n });\r\n }\r\n }\r\n this.props.setTab('Funding Table');\r\n this.setState({ saveStatusMessage: 'Changes saved successfully' });\r\n this.updateTotal();\r\n\r\n } else {\r\n this.setState({ saveStatusMessage: 'Changes were not saved' });\r\n this.setState({ showErrors: true })\r\n }\r\n };\r\n\r\n handleValidation(data) {\r\n let errors = {\r\n ASPriorFunding: \"\",\r\n ASCurrentFunding: \"\",\r\n ASCurrentPlusOneFunding: \"\",\r\n ASFutureFunding: \"\",\r\n DSPriorFunding: \"\",\r\n DSCurrentFunding: \"\",\r\n DSCurrentPlusOneFunding: \"\",\r\n DSFutureFunding: \"\"\r\n };\r\n\r\n this.setState({ saveStatusMessage: null });\r\n\r\n let formIsValid = true;\r\n\r\n if (!data.ASCurrentPlusOneFunding) {\r\n formIsValid = false;\r\n errors[\"ASCurrentPlusOneFunding\"] = \"Cannot be empty\";\r\n }\r\n if (!data.DSCurrentPlusOneFunding) {\r\n formIsValid = false;\r\n errors[\"DSCurrentPlusOneFunding\"] = \"Cannot be empty\";\r\n }\r\n\r\n this.setState({ errors });\r\n return formIsValid;\r\n }\r\n\r\n handleAddFundValidation(data) {\r\n let errorsAddFunding = {\r\n FundingSource: \"\",\r\n PriorFunding: \"\",\r\n CurrentFunding: \"\",\r\n CurrentPlusOneFunding: \"\",\r\n FutureFunding: \"\",\r\n };\r\n this.setState({ saveStatusMessage: null });\r\n\r\n let formIsValid = true;\r\n errorsAddFunding[\"FundingSource\"] = \"\";\r\n\r\n for (let af in data.rows) {\r\n if (data.rows[af].FundingSource.length === 0) {\r\n formIsValid = false;\r\n errorsAddFunding[\"FundingSource\"] = \"Funding source name cannot be empty\";\r\n }\r\n if (data.rows[af].FundingSource.length > 100) {\r\n formIsValid = false;\r\n errorsAddFunding[\"FundingSource\"] = \"Funding source name cannot be greater than 100 characters.\";\r\n }\r\n if ((data.rows[af].PriorFunding === 0) && (data.rows[af].CurrentFunding === 0) && (data.rows[af].CurrentPlusOneFunding === 0) && (data.rows[af].FutureFunding === 0)) {\r\n formIsValid = false;\r\n errorsAddFunding[\"FundingSource\"] = \"All funding sources must have at least one funding value.\";\r\n }\r\n }\r\n\r\n this.setState({ errorsAddFunding });\r\n return formIsValid;\r\n }\r\n\r\n render() {\r\n\r\n const style = { color: '#0062cc' };\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 {this.state.rows.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 {this.state.rows.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.rows.length > 0 &&\r\n \r\n }\r\n \r\n {this.state.rows.map(row => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Funding SourcePrior($)FY{this.state.FY - 1}($)FY{this.state.FY}($)Future($)Total($)
\r\n \r\n \r\n {\r\n const {value } = values;\r\n this.setState({ ASPriorFunding: parseInt(value) })\r\n }}\r\n isNumericString=\"true\"\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ASPriorFunding.length > 0 &&\r\n {this.state.errors.ASPriorFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ASCurrentFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.ASCurrentFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ASCurrentFunding.length > 0 &&\r\n {this.state.errors.ASCurrentFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ASCurrentPlusOneFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.ASCurrentPlusOneFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ASCurrentPlusOneFunding.length > 0 &&\r\n {this.state.errors.ASCurrentPlusOneFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ASFutureFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.ASFutureFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.ASFutureFunding.length > 0 &&\r\n {this.state.errors.ASFutureFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ ASRowTotalFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n
\r\n \r\n \r\n {\r\n const { value } = values;\r\n this.setState({ DSPriorFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.DSPriorFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n isNumericString=\"true\"\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.DSPriorFunding.length > 0 &&\r\n {this.state.errors.DSPriorFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ DSCurrentFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.DSCurrentFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.DSCurrentFunding.length > 0 &&\r\n {this.state.errors.DSCurrentFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ DSCurrentPlusOneFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.DSCurrentPlusOneFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.DSCurrentPlusOneFunding.length > 0 &&\r\n {this.state.errors.DSCurrentPlusOneFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ DSFutureFunding: value })\r\n }}\r\n className={\"form-control required \" + (this.state.errors.DSFutureFunding.length ? 'alert-danger' : '')}\r\n onBlur={this.handleChange.bind(this)}\r\n disabled={this.props.closed}\r\n />\r\n {this.state.errors.DSFutureFunding.length > 0 &&\r\n {this.state.errors.DSFutureFunding}}\r\n \r\n {\r\n const { value } = values;\r\n this.setState({ DSRowTotalFunding: value })\r\n }}\r\n disabled={this.props.closed}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Cancel\r\n\t\t\t\t\t\t\t\r\n
\r\n
\r\n \r\n Save & Continue\r\n\t\t\t\t\t\t\t\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass PriorAppRow extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n priorAppId: 0,\r\n priorFY: \"\",\r\n priorAppProject: \"\",\r\n priorAppStatus: \"\", \r\n priorAppErrors: \"\",\r\n };\r\n this.printApplication = this.printApplication.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n //const date = new Date();\r\n // console.log(\"this.props.rowId:\" + this.props.rowId);\r\n if (this.props.rowId > 0) {\r\n\r\n fetch(this.props.url + 'Application/' + this.props.rowId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(row => {\r\n this.setState({\r\n priorAppId: row.applicationId,\r\n priorFY: row.applicationFiscalYearId,\r\n priorAppProject: row.cfiProjectName,\r\n priorAppStatus: row.applicationStatusDescription,\r\n })\r\n }\r\n ).catch(error => {\r\n console.log(error);\r\n });\r\n } else {\r\n this.setState({\r\n priorAppId: this.props.applicationId,\r\n priorFY: \"\",\r\n priorAppProject: \"\",\r\n priorAppStatus: \"\",\r\n\r\n })\r\n }\r\n }\r\n\r\n printApplication = (e) => {\r\n e.preventDefault();\r\n this.setState({ loading: true });\r\n //console.log(\"this.state.priorAppId\" + this.state.priorAppId)\r\n if (this.state.priorAppId) {\r\n window.open(this.props.url + 'pdfcreator/' + this.state.priorAppId)\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n render() {\r\n //console.log(\"***In PriorAppRow.jsx***\");\r\n return (\r\n\r\n \r\n {this.state.priorAppId}\r\n {this.state.priorFY}\r\n {this.state.priorAppProject}\r\n {this.state.priorAppStatus}\r\n \r\n \r\n Print\r\n \r\n {/**/}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PriorAppRow;","import React, { Component } from \"react\";\r\nimport './Documents.css'\r\nimport PriorAppRow from './RowComponents/PriorAppRow';\r\n\r\nexport class PriorApp extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n priorAppId: this.props.appId,\r\n url: this.props.url,\r\n priorapprows: [],\r\n priorapprowsData: [],\r\n areDocumentsValid: true,\r\n saveStatusMessage: null,\r\n documentErrors: \"\",\r\n DocumentTypeMapExists: false,\r\n DocumentTypeFundingExists: false,\r\n DocumentTypeRankingExists: false,\r\n userId:this.props.userId, \r\n errors: {\r\n DocumentTypeSelected: \"\",\r\n DocumentTypeMap: \"\",\r\n DocumentTypeFunding: \"\",\r\n DocumentTypeRanking: \"\",\r\n }\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.getPriorApps();\r\n }\r\n\r\n getPriorApps() {\r\n fetch(this.props.url + 'Application/PriorFundingYearApplicationUser/' + this.props.userId)\r\n .then(response => response.json())\r\n .then(result => this.populatePriorAppRows(result)).catch(error => {\r\n console.log(error);\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n populatePriorAppRows(data) {\r\n let priorapprows = [];\r\n let priorapprowsData = [];\r\n for (let entry in data) {\r\n priorapprows.push(data[entry].applicationId);\r\n priorapprowsData.push({\r\n id: data[entry].applicationId,\r\n application: \"\",\r\n priorFY: \"\",\r\n priorAppStatus: \"\", \r\n priorAppProject: \"\",\r\n });\r\n }\r\n this.setState({ priorapprows });\r\n this.setState({ priorapprowsData });\r\n }\r\n\r\n render() {\r\n\r\n const style = { color: '#0062cc' };\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 {this.state.priorapprows.length > 0 &&\r\n \r\n }\r\n \r\n \r\n \r\n {this.state.priorapprows.map(row => (\r\n app.id)}*/\r\n applicationId={row.applicationId}\r\n />\r\n ))}\r\n \r\n
Application IdFiscal YearProject NameStatus
\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, { Component } from \"react\";\r\nimport { Spinner } from \"reactstrap\";\r\n\r\nexport class SubmitApplication extends Component {\r\n state = {\r\n chkContractTemplate: \"\",\r\n //chkDigitalSignature: \"\",\r\n //digitalSignatureFlg: 0,\r\n applicationStatusId: 0,\r\n dateApplicationSubmitted: \"\",\r\n applicationSubmitted: \"No\",\r\n appId: this.props.appId,\r\n saveStatusMessage: null,\r\n alreadySubmittedStatus: null,\r\n application: null,\r\n applicationMainFunding: null,\r\n applicationAdditionalFunding: [],\r\n applicationMilestones: [],\r\n applicationDocuments: [],\r\n applicationData: null,\r\n errorRows: [],\r\n loading: false,\r\n selectedDigitalSigOption: \"SelectOption\",\r\n applicationStatusDescription: \"\",\r\n errors: {\r\n ContractTermsReadErrors: \"\",\r\n DigitalSignatureErrors: \"\"\r\n },\r\n applicationErrors: [],\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.toggleContractChange = this.toggleContractChange.bind(this);\r\n this.handleDigitalSigOptionChange = this.handleDigitalSigOptionChange.bind(this);\r\n this.printApplication = this.printApplication.bind(this);\r\n this.withdrawApplication = this.withdrawApplication.bind(this);\r\n\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateInfo(result)).catch(error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n getApplicationSubmittal() {\r\n this.setState({ loading: true });\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/Details/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.validateApplication(result)).catch(error => {\r\n this.setState({ loading: false });\r\n console.log(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n updateDigitalSignature(data) {\r\n this.setState({ loading: true });\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/DigitalSignature/' + this.props.appId, {\r\n method: 'PUT',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => response.json()).catch(error => { console.log(error); this.setState({ dataSavedSuccessfully: false }); })\r\n .then(result => this.getApplicationSubmittal(result));\r\n }\r\n }\r\n\r\n getApplicationData() {\r\n //console.log(\"appid in submit: \", this.props.appId);\r\n this.setState({ loading: true });\r\n if (this.props.appId) {\r\n fetch(this.props.url + 'Application/' + this.props.appId)\r\n .then(response => response.json())\r\n .then(result => this.populateInfo(result)).catch(error => {\r\n this.setState({ loading: false });\r\n console.log(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n populateInfo(data) {\r\n if (data.digitalSignatureFlg === 1) {\r\n this.setState({ selectedDigitalSigOption: \"Yes\" });\r\n this.setState({ chkContractTemplate: true });\r\n } else if (data.digitalSignatureFlg === 0) {\r\n this.setState({ selectedDigitalSigOption: \"No\" });\r\n this.setState({ chkContractTemplate: true });\r\n } else {\r\n this.setState({ chkContractTemplate: false });\r\n }\r\n\r\n if (data.applicationStatusId !== null) {\r\n this.setState({ applicationStatusId: data.applicationStatusId });\r\n this.setState({ applicationStatusDescription: data.applicationStatusDescription });\r\n }\r\n\r\n if (data.dateSubmitted !== null) {\r\n const dt = new Date(data.dateSubmitted);\r\n this.setState({ dateApplicationSubmitted: dt.toDateString() + ' ' + dt.toLocaleTimeString() });\r\n }\r\n }\r\n\r\n validateApplication(data) {\r\n fetch(this.props.url + 'Application/ValidateSubmit/', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then((response) => {\r\n if (response.status < 400) {\r\n response.json().then(data => {\r\n this.setState({ loading: false });\r\n this.setState({ applicationStatusId: 2 });\r\n this.setState({ saveStatusMessage: 'Application has been successfully submitted.' });\r\n })\r\n } else {\r\n this.setState({ loading: false });\r\n throw response;\r\n }\r\n })\r\n .catch(err => {\r\n err.json().then(error => {\r\n if (error.statusCode >= 400) {\r\n this.setState({ loading: false });\r\n this.populateResult(error.value)\r\n }\r\n })\r\n })\r\n }\r\n\r\n toggleContractChange = () => {\r\n this.setState({\r\n chkContractTemplate: !this.state.chkContractTemplate,\r\n });\r\n this.setState({ ContractTermsReadErrors: \"\" });\r\n this.setState({ saveStatusMessage: '' });\r\n }\r\n\r\n handleChange(e) {\r\n const target = e.target;\r\n const name = target.name;\r\n const value = target.value;\r\n this.setState({ [name]: value });\r\n }\r\n\r\n handleDigitalSigOptionChange = changeEvent => {\r\n this.setState({ selectedDigitalSigOption: changeEvent.target.value });\r\n this.setState({ DigitalSignatureErrors: \"\" });\r\n this.setState({ saveStatusMessage: '' });\r\n };\r\n\r\n handleValidation(data) {\r\n this.setState({ saveStatusMessage: null })\r\n this.setState({ dateApplicationSubmitted: null })\r\n\r\n let errors = {\r\n ContractTermsReadErrors: \"\",\r\n DigitalSignatureErrors: \"\",\r\n };\r\n\r\n let formIsValid = true;\r\n if (this.state.chkContractTemplate !== true) {\r\n formIsValid = false;\r\n errors[\"ContractTermsReadErrors\"] = \"Must be checked to submit Application to the District. \";\r\n }\r\n\r\n if (this.state.selectedDigitalSigOption === \"SelectOption\") {\r\n formIsValid = false;\r\n errors[\"DigitalSignatureErrors\"] = \"Please select an option\";\r\n }\r\n this.setState({ errors: errors });\r\n\r\n return formIsValid;\r\n }\r\n\r\n populateResult(result) {\r\n this.setState({ errorRows: [] });\r\n let errorRows = [];\r\n for (let entry in result) {\r\n errorRows.push(result[entry]);\r\n }\r\n this.setState({ errorRows: errorRows });\r\n }\r\n\r\n printApplication = (e) => {\r\n e.preventDefault();\r\n this.setState({ loading: true });\r\n if (this.props.appId) {\r\n window.open(this.props.url + 'pdfcreator/' + this.props.appId)\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n withdrawApplication = (e) => {\r\n e.preventDefault();\r\n this.setState({ loading: true });\r\n if (this.props.appId) {\r\n let data = {\r\n ApplicationId: this.props.appId,\r\n ApplicationStatusId: 3\r\n }\r\n fetch(this.props.url + 'Application/Withdraw', {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n this.setState({ loading: false });\r\n this.setState({ applicationStatusId: 3 });\r\n this.setState({ saveStatusMessage: 'Application has been successfully withdrawn.' });\r\n }\r\n }\r\n\r\n appNext = (e) => {\r\n e.preventDefault();\r\n\r\n this.setState({ errorRows: [] });\r\n this.setState({ dateApplicationSubmitted: null })\r\n let data = {\r\n ApplicationId: this.props.appId,\r\n DigitalSignatureFlg: null,\r\n ApplicationStatusId: 2,\r\n }\r\n if (this.state.chkContractTemplate === true) {\r\n data.chkContractTemplate = 1;\r\n } else {\r\n data.chkContractTemplate = 0;\r\n }\r\n if (this.state.selectedDigitalSigOption === \"Yes\") {\r\n data.DigitalSignatureFlg = 1;\r\n } else if (this.state.selectedDigitalSigOption === \"No\") {\r\n data.DigitalSignatureFlg = 0;\r\n } else {\r\n data.DigitalSignatureFlg = null;\r\n }\r\n //if (data.DigitalSignatureFlg !== null && data.DigitalSignatureFlg !== 0) {\r\n // this.setState({ selectedDigitalSigOption: \"Yes\" });\r\n // data.DigitalSignatureFlg = 1;\r\n //} else if (data.DigitalSignatureFlg !== null && data.DigitalSignatureFlg == 0) {\r\n // this.setState({ selectedDigitalSigOption: \"No\" });\r\n // data.DigitalSignatureFlg = 0;\r\n // } \r\n //else {\r\n // this.setState({ selectedDigitalSigOption: \"\" });\r\n // //data.DigitalSignatureFlg = 0;\r\n //}\r\n if (this.handleValidation(data)) {\r\n try {\r\n if (this.props.appId) {\r\n this.updateDigitalSignature(data);\r\n }\r\n this.props.setTab('Application');\r\n } catch (ex) {\r\n return (ex.toString());\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const errors = this.state.errorRows.map((e, i) =>
  • {e}
  • )\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 {this.state.errors.ContractTermsReadErrors.length > 0 &&\r\n {this.state.errors.ContractTermsReadErrors}}\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.errors.DigitalSignatureErrors.length > 0 &&\r\n {this.state.errors.DigitalSignatureErrors}\r\n }\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n (SELECTION REQUIRED):Digital Signature is preferred, but selecting 'No' will not negatively impact your project's evaluation.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n **Please ensure that all information is correct and that you have saved all of your data on each of the sections before submitting your application.\r\n You may continue to edit and submit your application up until the application submission deadline.\r\n
    \r\n
    \r\n {this.state.dateApplicationSubmitted && this.state.applicationStatusId === 2 && \r\n
    \r\n \r\n
    \r\n }\r\n {this.state.dateApplicationSubmitted && this.state.applicationStatusId === 3 &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n
      {errors}
    \r\n
    \r\n
    \r\n {this.state.loading === true &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n {this.state.saveStatusMessage && this.state.applicationStatusId === 2 && \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    }\r\n {this.state.saveStatusMessage && this.state.applicationStatusId === 3 &&\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    }\r\n
    \r\n
    \r\n
    \r\n \r\n Withdraw Application\r\n \r\n
    \r\n
    \r\n \r\n Print Application\r\n\t\t\t\t\t\t\t\t \r\n
    \r\n
    \r\n \r\n Submit Completed Application\r\n\t\t\t\t\t\t\t\t \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport class ApplicationPicker extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleAppSelectionChange = this.handleAppSelectionChange.bind(this);\r\n }\r\n\r\n state = {\r\n applications: [],\r\n selectedAppId: null,\r\n url: null,\r\n token: null, \r\n selectedAppIdFY: null,\r\n applicationFYId: null\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n this.getApplications(); \r\n }\r\n\r\n getApplications() {\r\n this._isMounted = true;\r\n fetch(this.props.url + 'Application/CurrentFundingYearApplicationUser/' + this.props.userId)\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n if (this._isMounted) {\r\n let applicationsfromApi = response.map(application => {\r\n return { value: application.applicationId, label: \"FY \" + application.applicationFiscalYearId + \":\" + application.cfiProjectName }\r\n });\r\n\r\n this.setState({ applications: applicationsfromApi });\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n handleAppSelectionChange() {\r\n var fld = document.getElementById(\"applicationSelector\");\r\n var result = \"\";\r\n for (var i = 1; i < fld.options.length; i++) {\r\n if (fld.options[i].selected === true) {\r\n result = fld.options[i].value;\r\n }\r\n }\r\n this.setState({ selectedAppId: result });\r\n this.handleAppId(result);\r\n }\r\n\r\n handleAppId(applicationId) {\r\n this.props.setAppId(applicationId);\r\n }\r\n\r\n render() {\r\n const { applications } = this.state;\r\n const { value } = this.props;\r\n\r\n let applicationsList = applications.length > 0\r\n && applications.map((application) => {\r\n return (\r\n \r\n )\r\n }, this);\r\n\r\n if (this.props.closed === true) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n {applicationsList}\r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n \r\n \r\n {applicationsList}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Application } from './Application';\r\nimport { Milestones } from './TabComponents/Milestones';\r\nimport { Documents } from './TabComponents/Documents';\r\nimport { DescBenCost } from './TabComponents/DescBenCost';\r\nimport { CompEfforts } from './TabComponents/CompEfforts';\r\nimport { Funding } from './TabComponents/Funding';\r\nimport { PriorApp } from './TabComponents/PriorApp';\r\nimport { SubmitApplication } from './TabComponents/SubmitApplication';\r\nimport { ApplicationPicker } from './ApplicationPicker';\r\nimport './Tabs.css';\r\n\r\n//uncomment if you want to use token\r\n//import authService from '../components/api-authorization/AuthorizeService'\r\n\r\nexport class Tabs extends Component {\r\n state = {\r\n ApplicationId: null\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleClick = this.handleClick.bind(this);\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n\r\n this.state = {\r\n applicationOpenDateDisplay: '8/1/2022',\r\n applicationOpenDate: new Date(\"8/1/2022\"),\r\n applicationCloseDateDisplay: '10/29/2021 5:00 PM',\r\n applicationCloseDate: new Date(\"8/1/2022\"),\r\n \r\n isPastApplicationCloseDate: true,\r\n\r\n //url: \"https://localhost:5000/api/\",\r\n //url: \"https://wwwappsdev01.swfwmd.state.fl.us/CFIBackendService/api/\", // DEV\r\n //url: \"https://wwwappsacc01.swfwmd.state.fl.us/CFIBackendService/api/\", // ACC\r\n url: \"https://www31.swfwmd.state.fl.us/CFIBackendService/api/\", // PROD\r\n\r\n collapsed: true,\r\n activetab: 'Application',\r\n ApplicationId: null,\r\n //ApplicationId: 109,\r\n //UserId: '209d00eb-d2f7-456b-8c8f-4a08da05ddcd', // JML\r\n UserId: 'before change',\r\n statusMessage: null,\r\n applicationData: null,\r\n applicationDocuments: [],\r\n applicationMainFunding: [],\r\n applicationAdditionalFunding: [],\r\n applicationMilestones: [],\r\n applicationFiscalYear: null,\r\n priorYearApp: [],\r\n showPopout: false,\r\n applicationClass: '',\r\n projtypeClass: '',\r\n dbcClass: '',\r\n compeffClass: '',\r\n fundClass: '',\r\n docsClass: '',\r\n submitClass: '',\r\n priorYearClass: '',\r\n\r\n tabs: [\r\n { id: 'application', display: 'Application' },\r\n { id: 'projtype', display: 'Project Type and Scheduling' },\r\n { id: 'dbc', display: 'Description/Benefit/Cost' },\r\n { id: 'compeff', display: 'Complementary Efforts' },\r\n { id: 'fund', display: 'Funding Table' },\r\n { id: 'docs', display: 'Documents' },\r\n { id: 'submit', display: 'Submit Application' },\r\n { id: 'priorYear', display: 'Prior Year Applications' },\r\n ],\r\n };\r\n }\r\n\r\n // This sets the above state variable\r\n setPopoutOpen() {\r\n this.setState({\r\n showPopout: !this.state.showPopout\r\n });\r\n }\r\n\r\n handleClick = activetab => {\r\n this.setState({ activetab });\r\n };\r\n\r\n handleSetAppId = ApplicationId => {\r\n this.setState({ ApplicationId });\r\n this.setState({ ApplicationId: parseInt(ApplicationId), id: \"nav-application-tab\" });\r\n this.setState({ activetab: 'Application' });\r\n };\r\n\r\n handleApplicationChange(e) {\r\n const selectedId = parseInt(e.target.value, 10);\r\n if (selectedId === 0) {\r\n if (this.state.isPastApplicationCloseDate === false) {\r\n this.setState({ ApplicationId: selectedId, id: \"nav-application-tab\", activetab: 'Application' });\r\n \r\n document.getElementById(\"nav-application-tab\").click();\r\n } else {\r\n this.setState({ ApplicationId: 0, id: \"nav-priorYear-tab\", activetab: 'Prior Year Applications' });\r\n }\r\n } else {\r\n this.setState({ ApplicationId: selectedId, id: \"nav-application-tab\", activetab: 'Application' });\r\n }\r\n };\r\n\r\n handleDisplayMessage = message => {\r\n this.setState({ statusMessage: message });\r\n };\r\n\r\n handleTabbing = lasttab => {\r\n switch (lasttab) {\r\n default: this.setState({ activetab: 'Application' });\r\n }\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n //TODO - should change to ComponentDidMount, \r\n //but this code will not work in componentDidMount or in constructor\r\n //it doesn't get the userId\r\n //and we need that to associate the application to the login\r\n UNSAFE_componentWillMount() {\r\n const tabsUserid = this.props.location.state.userId;\r\n\r\n this.setState({ UserId: { tabsUserid } });\r\n }\r\n\r\n componentDidMount() {\r\n fetch(this.state.url + 'Application/GetSessionCloseDate', {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n })\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then(response => {\r\n const close = new Date(response);\r\n const date = new Date();\r\n this.setState({\r\n applicationCloseDate: close\r\n });\r\n this.setState({\r\n applicationCloseDateDisplay: close.toLocaleString()\r\n }); \r\n if (date < this.state.applicationCloseDate) {\r\n this.setState({ isPastApplicationCloseDate: false });\r\n } else {\r\n this.setState({ isPastApplicationCloseDate: true });\r\n if (this.state.ApplicationId === null) {\r\n this.setState({ activetab: 'Prior Year Applications' });\r\n }\r\n }\r\n\r\n this.setState({ applicationFiscalYear: date.getFullYear + 1 });\r\n }).catch(error => {\r\n console.log(error);\r\n }); \r\n }\r\n\r\n //componentDidUpdate(prevProps) {\r\n // // Typical usage (don't forget to compare props):\r\n // if (this.props.appId !== prevProps.appId) {\r\n // this.setState({ activetab: 'Application' });\r\n // }\r\n //}\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n The deadline for application submittal is {this.state.applicationCloseDateDisplay}, after which the system will be locked and no additional applications will be accepted. Please ensure your application is complete and submitted prior to this deadline.\r\n
    \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.ApplicationId > 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\n
    \r\n \r\n
    \r\n \r\n }\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    Application ID: {this.state.ApplicationId}

    \r\n {/*

    ID: {this.state.id}

    */}\r\n {/*

    Active Tab: {this.state.activetab}

    */}\r\n
    \r\n
    \r\n );\r\n //}\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PriorAppRow from './TabComponents/RowComponents/PriorAppRow';\r\n\r\nexport class Cooperator extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n //url: 'https://localhost:5000/api/',\r\n //url: 'https://wwwappsacc01.swfwmd.state.fl.us/CFIBackendService/api/', \r\n url: 'https://www31.swfwmd.state.fl.us/CFIBackendService/api/',\r\n //ApplicationId: null,\r\n //ApplicationId: 109,\r\n //UserId: '209d00eb-d2f7-456b-8c8f-4a08da05ddcd', // JML\r\n userId: this.props.location.state.userId,\r\n coopapprows: [],\r\n coopapprowsData: []\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.getCoopApps();\r\n }\r\n\r\n getCoopApps() {\r\n fetch(this.state.url + 'Application/ApplicationsByCoopOfUserId/' + this.state.userId)\r\n .then(response => response.json())\r\n .then(result => this.populateCoopAppRows(result)).catch(error => {\r\n console.log(error);\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n populateCoopAppRows(data) {\r\n let coopapprows = [];\r\n let coopapprowsData = [];\r\n for (let entry in data) {\r\n coopapprows.push(data[entry].applicationId);\r\n coopapprowsData.push({\r\n id: data[entry].applicationId,\r\n application: \"\",\r\n priorFY: \"\",\r\n priorAppStatus: \"\",\r\n priorAppProject: \"\",\r\n });\r\n }\r\n this.setState({ coopapprows });\r\n this.setState({ coopapprowsData });\r\n }\r\n\r\n render() {\r\n const style = { alignSelf: 'center' };\r\n\r\n return (\r\n \r\n
    \r\n

    Cooperator Applications

    \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.coopapprows.length > 0 &&\r\n \r\n }\r\n \r\n \r\n \r\n {this.state.coopapprows.map(row => (\r\n \r\n ))}\r\n \r\n
    Application IdFiscal YearProject NameStatus
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\r\nimport { Tabs } from './components/Tabs';\r\nimport { Cooperator } from './components/Cooperator';\r\n\r\nimport './custom.css'\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n render() { \r\n\r\n // HACK! auto generate login click if coming from password reset\r\n // if coming from /Identity/Account/Login but you lost your query string force login click\r\n const referrer = document.referrer;\r\n if (referrer.search(\"/Identity/Account/Login\") !== -1 && referrer.search(\"\\\\?\") === -1) {\r\n window.location.href = \"/authentication/login\";\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","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'react-app-polyfill/ie9';\r\n//import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n\r\n"],"sourceRoot":""}