{"version":3,"sources":["assets/FDOT_SIS_Logo_White_Web.png","assets/userguide.png","assets/glossary.png","assets/database.png","assets/new_scenario.png","assets/fdot_logo.png","assets/fdot_sis_logo.png","assets/user_guide.png","assets/new_scenario1.png","assets/drop.png","assets/check.png","store/index.js","actions/index.js","containers/Header/Header.jsx","containers/Header/index.js","constants/database.js","actions/scenarios.js","actions/projects.js","pages/Home.jsx","js/utils.js","js/classfunctions.js","components/ResetModelParameters.jsx","components/SaveModelParameters.jsx","actions/parameters.js","pages/ModelParameters.jsx","components/ScenarioTable.jsx","components/ScenarioSelected.jsx","pages/Scenarios.jsx","components/ProjectTable.jsx","components/AddProject.jsx","components/SaveScenario.jsx","pages/Projects.jsx","components/AnalysisTable.jsx","actions/analysis.js","pages/Analysis.jsx","root/App.jsx","serviceWorker.js","index.js","reducers/scenario/projects.js","reducers/scenario/index.js","reducers/index.js","store/store.prod.js","constants/defaults.js","assets/saved_scenarios.png"],"names":["module","exports","__webpack_require__","p","require","d","__webpack_exports__","GET_PARAMETERS_REQUEST","GET_PARAMETERS_SUCCESS","GET_PARAMETERS_ERROR","PUT_PARAMETERS_REQUEST","PUT_PARAMETERS_SUCCESS","PUT_PARAMETERS_ERROR","SET_PARAMETERS_ARE_DEFAULT","SET_PARAMETERS_INFO","SET_PARAMETERS","SET_UPDATED_PARAMETERS","PARAMETERS_STATUS","LOAD_PROJECT_REQUEST","LOAD_PROJECT_SUCCESS","LOAD_PROJECT_ERROR","LOADSTATUS","SET_SELECTED_PROJECTS","SET_SCENARIO_PROJECTS","SET_NEW_PROJECTS","GP_OUTPUT_REQUEST","GP_OUTPUT_SUCCESS","GP_OUTPUT_ERROR","ML_OUTPUT_REQUEST","ML_OUTPUT_SUCCESS","ML_OUTPUT_ERROR","ANALYSIS_RESULTS_REQUEST","ANALYSIS_RESULTS_SUCCESS","ANALYSIS_RESULTS_ERROR","LOAD_SCENARIO_REQUEST","LOAD_SCENARIO_SUCCESS","LOAD_SCENARIO_ERROR","SET_SELECTED_SCENARIO","RELOAD_SCENARIOS","GET_SCENARIO_SEGMENTS_REQUEST","GET_SCENARIO_SEGMENTS_SUCCESS","GET_SCENARIO_SEGMENTS_ERROR","SAVE_SCENARIO_REQUEST","SAVE_SCENARIO_SUCCESS","UPDATE_SCENARIO_SUCCESS","SAVE_SCENARIO_ERROR","SAVESTATUS","DELETE_SCENARIO_REQUEST","DELETE_SCENARIO_SUCCESS","DELETE_SCENARIO_ERROR","DELETESTATUS","COPY_SCENARIO_REQUEST","COPY_SCENARIO_SUCCESS","COPY_SCENARIO_ERROR","COPYSTATUS","UNINITIALIZED","REQUESTING","RECEIVED","POSTING","POSTED","ERROR","LOADING","LOADED","SAVING","SAVED","DELETING","DELETED","COPYING","COPIED","Header","logoutUser","alert","react_default","a","createElement","className","react_router_dom","to","concat","process","exact","activeClassName","src","imgFdotSISLogoWhite","alt","id","this","props","userInfo","name","role","href","target","imgUserGuide","aria-hidden","imgGlossary","imgDatabase","dataInfo","dataYear","baseDataUpdate","Component","connect","state","scenario","projects","API_URL","fetchSavedScenarios","dispatch","getState","type","types","Promise","resolve","reject","console","log","url","axios","method","then","response","payload","status","statusText","data","length","catch","error","setSelectedScenario","fetchScenarioSegments","deleteScenario","copyScenario","selectedId","copyItems","requestSaveScenario","requestSaveScenarioError","deliverNewScenario","deliverUpdateScenario","setReloadScenarios","fetchProjects","setSelectedProjects","setNewProjects","setScenarioProjects","Home","_this","Object","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","showGetStarted","setState","showingGetStarted","showHome","newScenario","goToProjectPage","location","referrer","react_router","onClick","bind","imgSavedScenario","imgNewScenario","imgFdotLogo","imgFdotSISLogo","formatNumber","num","fractDigits","isMoney","negUseParen","dollarSign","toLocaleString","minimumFractionDigits","maximumFractionDigits","trimDecimalPlaces","Number","toFixed","addClass","elem","cls","classList","add","removeClass","remove","replace","RegExp","split","join","hasClass","contains","test","ResetModelParameters","showModal","classFunctions","document","getElementById","modalId","cancelResetParameters","resetParametersReturn","resetParameters","setTimeout","SaveModelParameters","cancelSaveParameters","saveParametersReturn","saveParameters","fetchModelParameters","setModelParameters","setModelParametersInfo","deliverModelParameters","ModelParameters","modifiedClassName","saveParametersId","resetParametersId","savedDisplay","goToHomePage","saveModelParameters","showSaveModal","hideSaveModal","removeSaveModal","result","mp","modelParameters","ump","updatedModelParameters","areDefault","idx","len","stateId","stateValue","modelParametersAreDefault","savedStatus","setUpdatedModelParameters","setModelParametersAreDefault","hideResetModal","resetModelParameters","showResetModal","removeResetModal","updateScreenFromReset","sid","ele","value","updateModifiedScreenDisplay","mustBeNumeric","event","code","which","keyCode","preventDefault","parameterModified","substring","defaultValue","truckAllowedManagedLanes","splice","notFound","parseFloat","push","handleInputChange","parametersUpdateDate","modelParametersUpdate","parameterStatus","parameterStatusMessage","modelParametersInfo","hasOwnProperty","prevProps","pathname","lastSaved","baseYear","onKeyPress","onChange","durationOfConstruction","periodOfAnalysis","realDiscountRate","UtilFunctions","annualizationFactor","dollarYearForCapitalSpending","trafficDataCurrentYear","trafficDataForecastYear","annualWageGrowthRate","inflationRate","autoAllPurposeTravel","travelTimeAutoBusiness","travelTimeTruckDrivers","occupancyRateAuto","occupancyRateTruck","accidentCostPropertyDamage","accidentCostFatality","accidentCostInjury","annualIncreaseInRealAccidentCosts","crashReductionFactorFatality","crashReductionFactorInjury","operatingCostAutoOil","operatingCostAutoTire","operatingCostAutoMaintenance","operatingCostAutoDepreciation","operatingCostTruckOil","operatingCostTruckTire","operatingCostTruckMaintenance","operatingCostTruckDepreciation","emissionCostNox","emissionCostVoc","emissionCostPm","emissionCostSo2","emissionCostCo","emissionCostCo2","cO2DiscountRate","freightLogisticsPremium","industryElasticityNaturalResourcesMining","industryElasticityConstruction","industryElasticityManufacturing","industryElasticityWholesaleRetailTrade","industryElasticityUtilities","industryElasticityInformation","industryElasticityFinancialServices","industryElasticityProfessionalBusinessServices","industryElasticityEducationHealthServices","industryElasticityLeisureHospitality","industryElasticityOtherServices","industryElasticityTransportationWarehousing","industryElasticityGovernment","shareTravelAuto","feesSpentOutsideFloridaAverage","percentPeakPeriodTraffic","passengerCarEquivalent","freewayCapacity","durationPeakPeriod","directionalTrafficFactor","managedLanesCapacity","managedLanesFreeFlowSpeed","numberManagedLanesBuilt","managedLaneOperatingCost","managedLandRenewalReplacementCost","managedLaneFrequencyOfRenewalReplacementCost","managedLaneTollCollectionCost","escalationRateCapitalCostInflation","escalationRateOperatingCostInflation","escalationRateRenewalReplacementCost","escalationRateTollCollectionCost","operationsMaintenanceCost","minimumConstructionCosts","components_ResetModelParameters","components_SaveModelParameters","nextProps","prevState","MODEL_PARAMETERS_INFO","headerStyles","makeStyles","theme","root","padding","ScenarioTableHead","classes","TableHead","TableRow","TableCell","align","useToolbarStyles","backgroundColor","highlight","palette","color","secondary","main","lighten","light","text","primary","dark","spacer","flex","actions","title","ScenarioTableToolbar","newScenarioReturn","Toolbar","Typography","variant","tableStyles","container","width","margin","paper","row","cursor","tableWrapper","overflowX","rows","notSelected","ScenarioTable","_useState","useState","_useState2","slicedToArray","setSelected","_useState3","_useState4","page","_useState5","_useState6","rowsPerPage","resultItemChecked","scenarioData","emptyRows","Math","min","Paper","ScenarioTable_ScenarioTableToolbar","Table","TableBody","map","hover","key","handleClick","scenarioName","gpProjects","mlProjects","totalCost","createdBy","dateCreated","style","height","colSpan","TablePagination","rowsPerPageOptions","component","count","backIconButtonProps","aria-label","nextIconButtonProps","onChangePage","ScenarioSelected","selectedScenarioReturn","loadScenario","loadScenarioCopy","showScenarioSelected","cancelCopy","saveScenario","copyScenarioName","selectedScenario","copyScenarioDesc","showSavingSplash","description","userName","handleNameChange","handleDescChange","chosenScenario","copyStatus","copyStatusMessage","copyScenarioResults","wrap","Scenarios","goToParametersPage","launchModal","showScenarioSelectedModal","hideModal","removeModal","item","reloadScenarios","savedScenarios","deleteStatus","deleteStatusMessage","imgSavedScenarios","components_ScenarioTable","components_ScenarioSelected","desc","b","orderBy","headRows","numeric","disablePadding","label","header0Styles","head","lineHeight","textAlign","border","ProjectTableHead0","header1Styles","paddingCheckbox","checkbox","ProjectTableHead1","onSelectAllClick","order","numSelected","rowCount","onRequestSort","Checkbox","indeterminate","checked","sortDirection","TableSortLabel","active","direction","property","minHeight","paddingLeft","spacing","paddingRight","subtitle1","fontSize","segmentQuery","ProjectTableToolbar","returnQueryValue","clsx","defineProperty","placeholder","e","qv","table","minWidth","borderLeft","ProjectTable","setOrder","setOrderBy","setPage","_useState7","_useState8","dense","setDense","_useState9","_useState10","setRowsPerPage","_useState11","_useState12","setSegmentQuery","selected","selectedProjects","unselectSegment","updateSelectedProjects","totalRows","projectData","filter","toString","indexOf","selectedIdx","segment","isSelected","localName","improvement","district","ProjectTable_ProjectTableToolbar","aria-labelledby","size","parseInt","array","cmp","stabilizedThis","el","index","sort","stableSort","getSorting","slice","isItemSelected","aria-checked","tabIndex","sisModeDescription","firstYearSpending","totalPreliminaryEngineering","totalEnvironmental","totalProjectDevelopmentEnvironment","totalRightOfWay","totalConstruction","effectiveDistance","aadtCurrent","truckAADTCurrent","msvCurrent","avgerageMaxSpeed","lanesCurrent","fatalityAverage","injuryAverage","aadT_FRC_NB","aadT_FRCT2_BD","trucK_AADT_FRCT2_BD","msV_FRC2_BD","msvCalculated","finalLanes","newPage","onChangeRowsPerPage","FormControlLabel","control","Switch","AddProject","addProjectReturn","saveNewProject","distance","duration","np","newProjects","newProj","startYear","deCost","rowCost","conCost","aadtForecast","aadtForecastNB","aadtNoBuild","truckAadtCurrent","aadtTruckCurrent","trucKAadtForecast","aadtTruckForecast","capacityCurrent","capacityForecast","freeFlowSpeed","speedCurrent","lanesForecast","managedLanesForecast","annualFatalities","fatalitiesCurrent","annualInjuries","injuriesCurrent","cost","stateObj","checkProjectIdType","loadedProjects","stateParams","isCandidate","lp","mode","onBlur","readOnly","scope","SaveScenario","cancelSaveScenario","saveScenarioReturn","saveAs","scenarioDesc","existingScenarioName","segments","numGp","numMl","ssp","scenarioProjects","modelParameter","isNewScenario","modelParameterID","saveScenarioCompleted","savedScenarioResults","saveStatus","saveStatusMessage","isOwner","ScenarioToShow","totalScenarioSelectedProjects","percentScenarioSelectedProjects","scenarioCost","Projects","saveScenarioModalId","goToScenariosPage","goToOutputPage","addNewProject","showAddProjectModal","resetProjects","scenarioProjectCount","newProject","nextNewSegment","showSaveScenarioModal","results","hideAddProjectModal","hideSaveScenarioModal","projList","addSelectedToScenaro","useProps","sp","prj","getProjectInfo","totalProjectCount","removeScenarioProject","isNew","haveNewProjectsChange","haveSelectedProjectsChange","snp","removeScenarioProjects","scenarioLastSaved","newPrjs","selPrjs","items","createScenarioItem","imgDrop","imgCheck","components_ProjectTable","components_AddProject","components_SaveScenario","haveUpdate","stateUpdate","scenarioSegmentStatus","scenarioSegmentStatusMessage","projectID","categoryCode","AnalysisTableHead0","AnalysisTableHead1","AnalysisTable","resultsData","selItem","projectDescription","improvementType","firstSpendingYear","totalDesignAndEngineering","discountedTotalCost","discountedBenefits","economicNetPresentValue","benefitCostRatio","discountedTravelTimeSavings","discountedVehicleOperatingCostSavings","discountedSafetySavings","discountedEmissionCostSavings","discountedFreightLogisticsBenefits","financialNetPresentValue","totalAutoRevenue","totalTruckRevenue","financialIRR","steiaOutputImpact","steiaEarningsImpact","steiaValueAddedImpact","steiaEmploymentImpact","lteiaOutputImpact","lteiaEarningsImpact","lteiaValueAddedImpact","lteiaEmploymentImpact","fetchAnalysisResults","config","Analysis","goToProjectsPage","setAndAnimateGraph","exportToExcel","exporting","list","forEach","Accept","responseType","window","navigator","msSaveBlob","URL","createObjectURL","link","setAttribute","body","appendChild","click","parentNode","removeChild","message","nothingToFetch","eiaGraphShowing","showingProjectTotals","bigNumbersClass","negNumbersClass","eiaBreaks","eiaBeingAnalyzed","outputImpact","earningsImpact","valueAddedImpact","employmentImpact","projectBeingAnalyzed","analysisResults","analysisTotals","analysisCounts","updateEIAGraphShowing","assertThisInitialized","analysisPayload","eiaType","pba","isShortTerm","negNumFactor","abs","largest","interval","minVal","minValShow","maxVal","decimalPlaces","tmpVal","output","earnings","valueAdded","CircularProgress","thickness","components_AnalysisTable","App","createBrowserHistory","basename","es","store","containers_Header","path","Boolean","hostname","match","ReactDOM","render","root_App","serviceWorker","ready","registration","unregister","initState","loadStatus","loadStatusMessage","gpRecs","mlRecs","totalRecs","projectGpResults","projectGpTotals","projectMlResults","projectMlTotals","combineReducers","arguments","undefined","action","objectSpread","defaultIdx","isDefault","msg","tmpDate","Date","formattedDate","getMonth","getDate","getFullYear","hour","minute","hour12","ap","projectSegments","project","mpi","isModified","counts","totals","lteiaDirectOutputImpact","autoTotalRevenue","truckTotalRevenue","createStore","reducer","applyMiddleware","thunk"],"mappings":"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","file":"static/js/main.9cbd7561.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAYAAADgKtSgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAG7SURBVHgB5ZRfTsJAEMZnZhcfjMZ6AvuqMbGcQL2Ayg30BnoC9AbewCM0YHwWTwAkJiAPgieACAlJ6e44W4EAkT828YH4PbXTX2Znd79+AOsqnHwJa90TxTYApY6A2UuKhC2IzYexqpQ73KqEr71AkTmZYDxAYYypGqRKbn+7NNU8LLc9tambwFABawsGBEbsJIQ0IOQAkY6FDhzDDC8WuAWOGyoZiuhcar7pD7K57G5nOHHbL9a7z7BEwvAKzPPTe38v2fTjWzevSJchhcJGOyjWPi9n6yaKW64vySjXxsZZSCFtdV6O72G2rja0b5kvCXh4tikUc3xjGE7nfdeQUs41ctveIiZ188SORHlxj1sAf2IIUursYOeemRceaermq2h9m6e+UCfLeAV/1XwypJY2dwEGmYwPygZKAsu48CLowIBaLhHHnPO4MO55zEmIzS6GxXqvaXhw6vLFWQsFkkioAttvmyF5YuIjl3by0/gsaTiPkW8+Inoqo4M4GpSGk2tfwDsdq1Kk1LR3ebTF2GeJVW3nM8lObHQRWUBF6GGh1r1FhGNYomQqmX40OSwVFuA3Chu9AP6FvgAdFdM6TZuvNQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGcSURBVHgBxZVdTsJAFIXPnQFDfEBYAbzCi7ACcQXACsAVqDuAFSArEFdQwA2wA1+MNT6xA34TMDhzndZWi1JJG4xf0mTuzPTM9PaeGcI3rIdJBqlUBnFYr6f1cnbqNBPB/vvn5aWGviK8jRERBucpJdum2dsStuxJno2oXqmyv2oUBvasBdBnLL6GZIWZ7+KI7kLgj9gr7KTIepyUEJHEvgmSErferHNE4Ncdf/xQuKUX3LVlz5tD88QWlixqxNyF1gMhRc1fQBCVIKhqPc1rsYRJyIaCGqlX3SOSDbfzyC2qHJhKkhBqpNAce3WdERBNpJxVOGPZi4pQuqlMWQriGSGcUGEnDRBiBFZ+10hAV9wxZ6dSTEzzNLIwmzxqvWnVC9mx+wXmDJHHyY4i3EjNHTAbI9E0snC1kG4GY8+RF164t/T+z3lx2UqFKa/c8GXZgebIFjZv58G6vVPYDFSUwjUo2UUc1pvpTmFzWA/qxZM+DkAgxzQ24Zl7NR2ALfMM7EWLiIx1eYwYKM3dejHd/yHsY9mrPOIQuEzfATPJoCvXMZCgAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABxCAYAAAANvCfuAAAACXBIWXMAABCcAAAQnAEmzTo0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAoaSURBVHgB7Zx/cBTlGcefzYWSyZ1ObEsShSlpUmmFKnRKLT/+SUZILe0IBOu00ljU0iEytXGadHSGmtS2w9TQQWsFplTBUnTGOlCZQlvAIf8QU+sfQUes7SSEjj/yY1rR5BjkTM73u5nN7O297+3dZXdvn/P9zFzg9t7b293vvs/7vM/zvGuQhFU331pvRIzvGcnJ+qRh1JAmDPQRGX3JieRTJ//2XLe10bC3qK9fVzG7PLJz0jA2kSbEGPsT8cR93d1/vjAtIMSbFS09Jf67hDQc6EvEP2yIWO8WLPridvHPOtJwobr0EyVlZg+sv3ldzaxI6TnSsKMUfyIlkVZVg6svXaKyiUnSFI5LkRJ6p6xM+pkpYIlhLJZ9+PWhUVrxvwukKTw9n6qgv1bPSdteYv5NJmucH6DXafHCA7SQWcIS1RfKJidIEy5kmpSQhjWlOban0iuvoIrVDXT5rbfp/d6Xle2u+OpSs+3F19+gD958W7kvtJsYG8u4L7/BMcyedw2FhbF/vKy8Zk5yErD6ro00/6ft0+/fefIg/ffnXWntrnvm93TlsqXT7wfaH6TR546ktClf+HmzHUQEOODXv/P9rA/cK+a1bqG5P9pCYeP8Q100tO+ga7usTWhEXGi7eOBqIehVojfa+fSGW1LEA/ieJZRFXddDKdvQA4K+kIX4zWyZ/2D6NZORtYBR0WNklDu2O8UDED/iOJhyyf6CNmNhMpsyyhXX3E7WAsbPvkEfvj+Wth1joR2MeU5gFp2mcUwy5gVtPnFOYeZiFseXtYATQjzneIdxzTm2DYlx8d3jp1K2ycbJfjEu2gXD/996dA8FieycwsKbj+yRdhgnZix09ZoN58iR96tIJOjH/x5M+wLMDro2Tj6T5whTirYQU3Ug1r4AemQ2B+wHOA6Z6S8UuK4ya/TrBTV0YdaslG05TyNk5lB1EF7ty29wDE5LwgU9kWeOFpA5WkDmaAGZo3RiZs+9hpY8sYs04WF2xy+JhkdStmX0QsMeqdBoE8oeLSBztIDM0QIyRwvIHC0gc7SAzNECMkcLyJyc84FecObV16h/YJBi0SgtvmERVVXOIT+Ixy/S309OVQesXH6jr79z+sWXRJRrhBpXNfj2OzICF/DQ80dpz9790+9xsrsf2yHELCcvGR4ZpS0/bDMvLvjj03+iru2dVFdbQ16C32l7oIOGh0fN9wfE77RsvpPWr11DQRC4CT185GjKe1yAw8//hbyma+fj0+KB8Xg85cbxikPi2C3xLA48/SwFRaAC4kSdJwsGBs6T1+DGcDLkiOR7Qb/k2HGzwJwGQSicGJywJj+0F8ocLSBztIDM0QIyp+gERJCg/YFO4e2me4HwTDG9eEW0KRYKEonxA8z5Ht75W3qx958Z2514odt8rb6pnu7YeFugURM/KIoeaEZd7m1zFc8ORGy7v0M6X+QEewHR8+yhrFwww2BCxHFbxIYb7AXc9bt9eYlnARGDDH15DesxEBcfplDF4usXmcHrqAiUn3n1rNJ5OSwC7E1rv8FyPGQt4B8OynsOBOvc9hNTQItm8Tp+spt2792XEuS2QJakZfMm4gZrE9p/blC6Hekcu3gWjavqqf2+rdLv9Ih8HkdYCzggksJOYAYhlIoVy0Rit6oybTvMMUdnhq2AKsflc7WfJTcWX79Quj0eHydufCxDaUPDvOd+dtgKWFU1x3RWnCCUlskUwlT2D8ifbVtVWUncYN0D6yTmEsnhTPM6eJsyL1Tm9HCAtYArln1Fuh3zOgSt7WEyiLZ7737zMxmIjXKE9TwQ3iZ6m6xHWUFry+MczlAPA891xfIbiSOseyDqSu+4/baMbSDcsEsxU7PYh9dljUHB3gtdL0JgM6nBbL79WxnnjWGnKKYRiLxAiFzBd5pdenDYKZqELoTANODAM8+6Zicw5rWJkBpXz9NO0QgIYArx6ul9Ka0yG2DM7NjWXhTCWRRlJAbxzlgslrYdE/9iEg/oqjTmaAHzxKp+UyWJ2+7vNPOPflNUY2AQZFv9hijQjkceNwMNSC57vazNQvfAHMin+g3fabm33bfeqAXMgc5fPJx3ARV6Y78kAT1TtIBZgpW3MxUAN4DXWf/ABMTYcVxRQYaFl2Eud4cZPP7CKeXnmJps2byJ2lq3UqPIaiBXqdrPiZPq/eRDIE4McnCqrAGYWmfeaV4IREjCVt535pXXlKYTDoo9rYVAgnPdvJ0eMX4ifusVvvZACAZXG2vT41mYDrjmzXfdI3J2xyhMILIjA7FUWU4SN+CO7T/Lq2IgV3wVEHfhmTxMI2o3wyTikGL9xPq131R+ByKuVOQYRzysyfFNQGS/ZzLoQ0Q/vLZ8kFkPCOSWQ1QNBeMeVr/5IuDUo0OOZmyDTHnU5QL48VgQr8hmSAji4Q2+ODGqkneAcaNJmB5LPPSyLjFHkhXpwvzCO72hwAFo9CRnVh/iuB1bj2LCH4vGyCt86YGqQR9rD5C3s/c8hJj2/KaLahWhptM5RD38QlUI7CycsoN5o8wLxc1QWzufvMJzAdGTVGNGJvf5HsXCkjDMD1UpKGt9IcJk1jnDakBYVWmj1+ksz02oyu671Z3AFKFnOsUfHy/8Q4BwbHjJbiYraI1XNjRv9LaEw/MeOJOBW5aEDQtY1RSdYeUaxn+vgxSeC1itKE/vd3keGu5kWflfLBalMIALr1qalg0oHPajgMpzASsVcUA4NpkeKKBKt1SHaL0CSjU6t7UrY50qMPbPRPxMeC4gCodUrrXqqRDw2FSD/nJF+XyhgIgIkzVmUYoPDxvPKPVz5a8v88CmtWuUAz5inSvFRYArjZggvFZVuM1tsWahsMoS4ZB0iBSRbA7rDHL7hS8C4i5VeW3gtDCnp3vdlzSHveh2KpwmH6PrPJzrZcK3WOhMvTaYKM4l70Hhm4CZUipuYLLb8oM7SeOOr+kkM0z22I6cvDZ4bBj4o0xXCwWN7xl59MQDT+wypwkoqZCNixDra6saTPG4P3wuaAKriTGf0dIqnwvhyRKoKdHi5Y6uSmOOFpA5WkDmBCpgNCb3LFWTYa/xIzBerfCwo9FgMiuBCgihZOGl7+axPNqNplvS18033tRAXiOLicKbDuqhCRH8qbt2YSsZRoX9A1zsJg8LUC2WfnkJXU5cpkQiQZ+ZN9ecsPux6PK6Lywwl1wj/vrJqyro27eu87Sg1gLFWZjv/v/d90hcQzMOfPemjeQHh48cEwnv1HyrgT+r12w4J368JuXAMH97chdpwkPz3VvTcqbaiWGOFpA5WkDmaAGZowVkjhaQOVpA5mgBmaMFZI4WkDlaQOa41cQMkiZM1Dg3TAloGIPOD0dGRvsMw/gSaUKDLOkwZUKTxlPOxsnk5KOkCRVJw0jTxMwHDvznbF/dtYvOJ0sM9MZ/GcnJX504dmg/aUKF0KnX1MmgCqFTn0gGtpCGNx8BzbLqIlctgHwAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/fdot_sis_logo.63c5827a.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAARCAYAAAAyhueAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFISURBVHgBrZK/S8NAFMe/J1lMFVw6VTC4KA7qIIhO/gWCoFk72kHQIl01ddQlTnZTsZsi6Nih4uSPyUnQQYPUpR1akK595k5bkjO1uaMfOO7x7t6Hd8cD+sSDNZ2+t2aOecwSdjFNINePR6AM8xjglB/3QWAnPNMCW8GgXXz3ql+kA69bW8rV/Q6Jrztr1uHiAQayxpJD0MG8LWPbK4kX+p3mF7wnR0ihSe3iGm+5HchCbWlQeJpaRFAYKa2XbhBXOLqVEVKZkJRffl3P4vOwEEuY2sxE3gtJh+fnxF5xC3/EcYUC0z4LjUn1/IraI1Jxj7rm2vB62WnIieTqcucreMfN55fOP/fsMOr5QfH4wZ6IVYVdpbJYRcgx/jvk4sTUBEx/qdBz+FWFv1JqfNSa0OGnjjw5b7QI2cmNy10GZkEZajBCXs5+AzUG5tIcfDOCAAAAAElFTkSuQmCC\"","\r\nif (process.env.NODE_ENV === \"production\") {\r\n module.exports = require(\"./store.prod\");\r\n} else {\r\n module.exports = require(\"./store.dev\");\r\n}\r\n\r\n\r\n","/**\r\n * Model parameters\r\n */\r\nexport const GET_PARAMETERS_REQUEST = \"GET_PARAMETERS_REQUEST\";\r\nexport const GET_PARAMETERS_SUCCESS = \"GET_PARAMETERS_SUCCESS\";\r\nexport const GET_PARAMETERS_ERROR = \"GET_PARAMETERS_ERROR\";\r\nexport const PUT_PARAMETERS_REQUEST = \"PUT_PARAMETERS_REQUEST\";\r\nexport const PUT_PARAMETERS_SUCCESS = \"PUT_PARAMETERS_SUCCESS\";\r\nexport const PUT_PARAMETERS_ERROR = \"PUT_PARAMETERS_ERROR\";\r\nexport const SET_PARAMETERS_ARE_DEFAULT = \"SET_PARAMETERS_ARE_DEFAULT\";\r\nexport const SET_PARAMETERS_INFO = \"SET_PARAMETERS_INFO\";\r\nexport const SET_PARAMETERS = \"SET_PARAMETERS\";\r\nexport const SET_UPDATED_PARAMETERS = \"SET_UPDATED_PARAMETERS\";\r\nexport const PARAMETERS_STATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n REQUESTING: 'REQUESTING',\r\n RECEIVED: 'RECEIVED',\r\n POSTING: 'POSTING',\r\n POSTED: 'POSTED',\r\n ERROR: 'ERROR'\r\n};\r\n\r\n/**\r\n * Projects\r\n */\r\nexport const LOAD_PROJECT_REQUEST = \"LOAD_PROJECT_REQUEST\";\r\nexport const LOAD_PROJECT_SUCCESS = \"LOAD_PROJECT_SUCCESS\";\r\nexport const LOAD_PROJECT_ERROR = \"LOAD_PROJECT_ERROR\";\r\nexport const ADD_NEW_PROJECT = \"ADD_NEW_PROJECT\";\r\nexport const TOGGLE_PROJECT_SELECTION = \"TOGGLE_PROJECT_SELECTION\";\r\nexport const LOADSTATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n LOADING: 'LOADING',\r\n LOADED: 'LOADED',\r\n ERROR: 'ERROR'\r\n};\r\n\r\n/**\r\n * Selected projects\r\n */\r\nexport const SET_SELECTED_PROJECTS = \"SET_SELECTED_PROJECTS\";\r\nexport const SET_SCENARIO_PROJECTS = \"SET_SCENARIO_PROJECTS\";\r\nexport const SET_NEW_PROJECTS = \"SET_NEW_PROJECTS\";\r\n\r\n/**\r\n * GP, ML Output\r\n */\r\nexport const GP_OUTPUT_REQUEST = \"GP_OUTPUT_REQUEST\";\r\nexport const GP_OUTPUT_SUCCESS = \"GP_OUTPUT_SUCCESS\";\r\nexport const GP_OUTPUT_ERROR = \"GP_OUTPUT_ERROR\";\r\nexport const ML_OUTPUT_REQUEST = \"ML_OUTPUT_REQUEST\";\r\nexport const ML_OUTPUT_SUCCESS = \"ML_OUTPUT_SUCCESS\";\r\nexport const ML_OUTPUT_ERROR = \"ML_OUTPUT_ERROR\";\r\nexport const ANALYSIS_RESULTS_REQUEST = \"ANALYSIS_RESULTS_REQUEST\";\r\nexport const ANALYSIS_RESULTS_SUCCESS = \"ANALYSIS_RESULTS_SUCCESS\";\r\nexport const ANALYSIS_RESULTS_ERROR = \"ANALYSIS_RESULTS_ERROR\";\r\n\r\n/**\r\n * Scenarios\r\n */\r\nexport const LOAD_SCENARIO_REQUEST = \"LOAD_SCENARIO_REQUEST\";\r\nexport const LOAD_SCENARIO_SUCCESS = \"LOAD_SCENARIO_SUCCESS\";\r\nexport const LOAD_SCENARIO_ERROR = \"LOAD_SCENARIO_ERROR\";\r\nexport const SET_SELECTED_SCENARIO = \"SET_SELECTED_SCENARIO\";\r\nexport const RELOAD_SCENARIOS = \"RELOAD_SCENARIOS\";\r\n\r\nexport const GET_SCENARIO_SEGMENTS_REQUEST = \"GET_SCENARIO_SEGMENTS_REQUEST\";\r\nexport const GET_SCENARIO_SEGMENTS_SUCCESS = \"GET_SCENARIO_SEGMENTS_SUCCESS\";\r\nexport const GET_SCENARIO_SEGMENTS_ERROR = \"GET_SCENARIO_SEGMENTS_ERROR\";\r\nexport const GET_SCENARIO_STATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n REQUESTING: 'REQUESTING',\r\n RECEIVED: 'RECEIVED',\r\n ERROR: 'ERROR'\r\n};\r\n\r\nexport const SAVE_SCENARIO_REQUEST = \"SAVE_SCENARIO_REQUEST\";\r\nexport const SAVE_SCENARIO_SUCCESS = \"SAVE_SCENARIO_SUCCESS\";\r\nexport const UPDATE_SCENARIO_SUCCESS = \"UPDATE_SCENARIO_SUCCESS\";\r\nexport const SAVE_SCENARIO_ERROR = \"SAVE_SCENARIO_ERROR\";\r\nexport const SAVESTATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n SAVING: 'SAVING',\r\n SAVED: 'SAVED',\r\n ERROR: 'ERROR'\r\n};\r\nexport const DELETE_SCENARIO_REQUEST = \"DELETE_SCENARIO_REQUEST\";\r\nexport const DELETE_SCENARIO_SUCCESS = \"DELETE_SCENARIO_SUCCESS\";\r\nexport const DELETE_SCENARIO_ERROR = \"DELETE_SCENARIO_ERROR\";\r\nexport const DELETESTATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n DELETING: 'DELETING',\r\n DELETED: 'DELETED',\r\n ERROR: 'ERROR'\r\n};\r\nexport const COPY_SCENARIO_REQUEST = \"COPY_SCENARIO_REQUEST\";\r\nexport const COPY_SCENARIO_SUCCESS = \"COPY_SCENARIO_SUCCESS\";\r\nexport const COPY_SCENARIO_ERROR = \"COPY_SCENARIO_ERROR\";\r\nexport const COPYSTATUS = {\r\n UNINITIALIZED: 'UNINITIALIZED',\r\n COPYING: 'COPYING',\r\n COPIED: 'COPIED',\r\n ERROR: 'ERROR'\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\nimport imgFdotSISLogoWhite from \"../../assets/FDOT_SIS_Logo_White_Web.png\";\r\nimport imgUserGuide from \"../../assets/userguide.png\";\r\nimport imgGlossary from \"../../assets/glossary.png\";\r\nimport imgDatabase from \"../../assets/database.png\";\r\n\r\nclass Header extends Component {\r\n logoutUser = () => {\r\n alert(\"Is logging out necessary?\");\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n Model
Parameters
\r\n Scenarios\r\n \"FDOT Return on Investment\r\n
\r\n\r\n
\r\n
\r\n User: {this.props.userInfo.name}\r\n {/* Logout */}\r\n Role: {this.props.userInfo.role}\r\n
\r\n \"\"USER GUIDE\r\n \"\"GLOSSARY\r\n
\r\n \"\"\r\n
\r\n Data Year: {this.props.dataInfo.dataYear}\r\n

Base data updated:

\r\n {this.props.dataInfo.baseDataUpdate}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n userInfo: state.scenario.projects.userInfo,\r\n dataInfo: state.scenario.projects.dataInfo\r\n});\r\nexport default connect(mapStateToProps)(Header);\r\n","import Header from \"./Header.jsx\";\r\nexport default Header;","// Dev\r\n//export const API_URL = \"https://localhost:44350\";\r\n// Stage\r\nexport const API_URL = \"https://fdot-set-api-stg.hdrgateway.com\";\r\n// FDOT\r\n//export const API_URL = \"https://DOT-WDWS006/set-api\";\r\n// export const API_URL = \"http://sioappsdev.dot.state.fl.us/set-api\";","import * as types from \"../actions\";\r\nimport axios from \"axios\";\r\n\r\nimport { API_URL } from \"../constants/database\";\r\n\r\n/**\r\n * LOAD SCENARIOS\r\n */\r\n// Initalize request event\r\nexport const requestScenarioData = () => ({\r\n type: types.LOAD_SCENARIO_REQUEST\r\n});\r\n// Request success event\r\nexport const requestScenarioDataSuccess = (payload) => ({\r\n type: types.LOAD_SCENARIO_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestScenarioDataError = (payload) => ({\r\n type: types.LOAD_SCENARIO_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchSavedScenarios = () => (dispatch, getState) => {\r\n dispatch(requestScenarioData());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchScenarios url=\"+API_URL);\r\n const url = `${API_URL}/scenarios`;\r\n axios({\r\n method: \"get\",\r\n url\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: fetchScenarios.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestScenarioDataSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestScenarioDataError(error))\r\n });\r\n });\r\n};\r\nexport const setSelectedScenario = (payload) => ({\r\n type: types.SET_SELECTED_SCENARIO,\r\n payload\r\n});\r\n\r\n/**\r\n * GET SCENARIO SEGMENTS\r\n */\r\n// Initalize request event\r\nexport const requestScenarioSegments = () => ({\r\n type: types.GET_SCENARIO_SEGMENTS_REQUEST\r\n});\r\n// Request success event\r\nexport const requestScenarioSegmentsSuccess = (payload) => ({\r\n type: types.GET_SCENARIO_SEGMENTS_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestScenarioSegmentsError = (payload) => ({\r\n type: types.GET_SCENARIO_SEGMENTS_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchScenarioSegments = (payload) => (dispatch, getState) => {\r\n dispatch(requestScenarioSegments());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchScenarioSegments...\" + payload);\r\n const url = `${API_URL}/scenario/${payload}`;\r\n axios({\r\n method: \"get\",\r\n url\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: fetchScenarioSegments.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestScenarioSegmentsSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestScenarioSegmentsError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * DELETE SCENARIO\r\n */\r\n// Initalize request event\r\nexport const requestDeleteScenario = () => ({\r\n type: types.DELETE_SCENARIO_REQUEST\r\n});\r\n// Request success event\r\nexport const requestDeleteScenarioSuccess = (payload) => ({\r\n type: types.DELETE_SCENARIO_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestDeleteScenarioError = (payload) => ({\r\n type: types.DELETE_SCENARIO_ERROR,\r\n payload\r\n});\r\n\r\nexport const deleteScenario = (payload) => (dispatch, getState) => {\r\n dispatch(requestDeleteScenario());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: deleteScenario url=\" + API_URL);\r\n const url = `${API_URL}/scenario/${payload}`;\r\n axios({\r\n method: \"delete\",\r\n url\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: deleteScenario.then-->status=\" + response.status + \", statusText=\" + response.statusText);\r\n dispatch(requestDeleteScenarioSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestDeleteScenarioError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * COPY SCENARIO\r\n */\r\n// Initalize request event\r\nexport const requestCopyScenario = () => ({\r\n type: types.COPY_SCENARIO_REQUEST\r\n});\r\n// Request success event\r\nexport const requestCopyScenarioSuccess = (payload) => ({\r\n type: types.COPY_SCENARIO_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestCopyScenarioError = (payload) => ({\r\n type: types.COPY_SCENARIO_ERROR,\r\n payload\r\n});\r\n\r\nexport const copyScenario = (payload) => (dispatch, getState) => {\r\n dispatch(requestCopyScenario());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: copyScenario url=\" + API_URL);\r\n const url = `${API_URL}/scenario/copy/${payload.selectedId}`;\r\n axios({\r\n method: \"post\",\r\n url,\r\n data: payload.copyItems\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: copyScenario.then-->status=\" + response.status + \", statusText=\" + response.statusText);\r\n dispatch(requestCopyScenarioSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestCopyScenarioError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * SAVE SCENARIOS\r\n */\r\n// Initalize request event\r\nexport const requestSaveScenario = () => ({\r\n type: types.SAVE_SCENARIO_REQUEST\r\n});\r\n// Request success event\r\nexport const requestSaveScenarioSuccess = (payload) => ({\r\n type: types.SAVE_SCENARIO_SUCCESS,\r\n payload\r\n});\r\n// Request success event\r\nexport const requestUpdateScenarioSuccess = (payload) => ({\r\n type: types.UPDATE_SCENARIO_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestSaveScenarioError = (payload) => ({\r\n type: types.SAVE_SCENARIO_ERROR,\r\n payload\r\n});\r\n\r\nexport const deliverNewScenario = (payload) => (dispatch, getState) => {\r\n dispatch(requestSaveScenario());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: deliverNewScenario url=\" + API_URL);\r\n const url = `${API_URL}/scenario`;\r\n axios({\r\n method: \"post\",\r\n url,\r\n data: payload\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: deliverNewScenario.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestSaveScenarioSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestSaveScenarioError(error))\r\n });\r\n });\r\n};\r\n\r\nexport const deliverUpdateScenario = (payload) => (dispatch, getState) => {\r\n dispatch(requestSaveScenario());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: deliverUpdateScenario url=\" + API_URL);\r\n const url = `${API_URL}/scenario/${payload.id}`;\r\n axios({\r\n method: \"put\",\r\n url,\r\n data: payload\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: deliverUpdateScenario.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestUpdateScenarioSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestSaveScenarioError(error))\r\n });\r\n });\r\n};\r\n\r\nexport const setReloadScenarios = (payload) => ({\r\n type: types.RELOAD_SCENARIOS,\r\n payload\r\n});\r\n","import * as types from \"../actions\";\r\nimport axios from \"axios\";\r\n\r\nimport {API_URL} from \"../constants/database\";\r\n\r\n/**\r\n * LOAD PROJECTS\r\n */\r\n// Initalize request event\r\nexport const requestProjectData = () => ({\r\n type: types.LOAD_PROJECT_REQUEST\r\n});\r\n// Request success event\r\nexport const requestProjectDataSuccess = (payload) => ({\r\n type: types.LOAD_PROJECT_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestProjectDataError = (payload) => ({\r\n type: types.LOAD_PROJECT_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchProjects = () => (dispatch, getState) => {\r\n dispatch(requestProjectData());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchProjects\");\r\n const url = `${API_URL}/projectSummaries`;\r\n axios({\r\n method: \"get\",\r\n url\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: fetchProjects.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestProjectDataSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestProjectDataError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * SELECTED PROJECTS\r\n */\r\nexport const setSelectedProjects = (payload) => ({\r\n type: types.SET_SELECTED_PROJECTS,\r\n payload\r\n});\r\nexport const setNewProjects = (payload) => ({\r\n type: types.SET_NEW_PROJECTS,\r\n payload\r\n});\r\n\r\nexport const setScenarioProjects = (payload) => ({\r\n type: types.SET_SCENARIO_PROJECTS,\r\n payload\r\n});\r\n","import React, { Component } from \"react\";\r\nimport { NavLink, Redirect } from \"react-router-dom\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { setSelectedScenario } from \"../actions/scenarios\";\r\nimport { setSelectedProjects, setScenarioProjects, setNewProjects } from \"../actions/projects\";\r\n\r\nimport imgSavedScenario from \"../assets/saved_scenarios.png\";\r\nimport imgNewScenario from \"../assets/new_scenario.png\";\r\nimport imgFdotLogo from \"../assets/fdot_logo.png\";\r\nimport imgFdotSISLogo from \"../assets/fdot_sis_logo.png\";\r\nimport imgUserGuide from \"../assets/user_guide.png\";\r\n\r\nconst initProjectProps = {\r\n goToProjectPage: false,\r\n selectedScenario: {scenarioName: \"\", scenarioDescription: \"\"},\r\n selectedProjects: [],\r\n scenarioProjects: [],\r\n newProjects: []\r\n};\r\nclass Home extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n goToProjectPage: false,\r\n showingGetStarted: this.props.location.state && this.props.location.state.referrer ? true : false\r\n }\r\n }\r\n\r\n showGetStarted = () => {\r\n this.setState({ showingGetStarted: true })\r\n }\r\n\r\n showHome = () => {\r\n this.setState({ showingGetStarted: false })\r\n }\r\n\r\n newScenario = () => {\r\n this.setState({ showingGetStarted: false, goToProjectPage: true });\r\n this.props.setSelectedScenario(null);\r\n this.props.setSelectedProjects([]);\r\n this.props.setScenarioProjects([]);\r\n this.props.setNewProjects([]);\r\n }\r\n\r\n render() {\r\n if (this.state.goToProjectPage === true) {\r\n return \r\n }\r\n return (\r\n
\r\n {!this.state.showingGetStarted ? null : (\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Let's get started

\r\n \r\n \"\"\r\n Load a saved scenario\r\n \r\n \r\n \"\"\r\n Create a new scenario\r\n \r\n
\r\n
\r\n )}\r\n\r\n {this.state.showingGetStarted ? null : (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"FDOT\"\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"\"\r\n
\r\n

SIS Economic Tool

\r\n \r\n \"\"\r\n VIEW USER GUIDE\r\n \r\n
\r\n
\r\n
\r\n
\r\n GET STARTED\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = null;\r\nconst mapDispatchToProps = dispatch => ({\r\n setScenarioProjects: (payload) => dispatch(setScenarioProjects(payload)),\r\n setSelectedScenario: (payload) => dispatch(setSelectedScenario(payload)),\r\n setSelectedProjects: (payload) => dispatch(setSelectedProjects(payload)),\r\n setNewProjects: (payload) => dispatch(setNewProjects(payload))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Home);","\r\nexport const formatNumber = (num, fractDigits, isMoney, negUseParen) => {\r\n let dollarSign = isMoney ? \"$\" : \"\";\r\n if (!num) return dollarSign + \"0\";\r\n if (num < 0 && negUseParen) {\r\n num = num * -1;\r\n return \"(\" + dollarSign + num.toLocaleString(\"en-US\",\r\n {\r\n minimumFractionDigits: fractDigits,\r\n maximumFractionDigits: fractDigits\r\n }\r\n ) + \")\";\r\n } else {\r\n return dollarSign + num.toLocaleString(\"en-US\",\r\n {\r\n minimumFractionDigits: fractDigits,\r\n maximumFractionDigits: fractDigits\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const trimDecimalPlaces = (num, fractDigits) => {\r\n if (!num) return num;\r\n //if (fractDigits === 0) return parseInt(num);\r\n return Number(num.toFixed(fractDigits));\r\n}\r\n","export const addClass = (elem, cls) => {\r\nif (elem.classList) {\r\n elem.classList.add(cls);\r\n} else {\r\n elem.className += ` ${cls}`;\r\n}\r\n};\r\n\r\nexport const removeClass = (elem, cls) => {\r\nif (elem.classList) {\r\n elem.classList.remove(cls);\r\n} else {\r\n elem.className = elem.className.replace(\r\n new RegExp(`(^|\\\\b)${cls.split(\" \").join(\"|\")}(\\\\b|$)`, \"gi\"),\r\n \" \"\r\n );\r\n}\r\n};\r\n\r\nexport const hasClass = (elem, cls) => {\r\nif (elem.classList) {\r\n return elem.classList.contains(cls);\r\n}\r\nreturn new RegExp(`(^| )${cls}( |$)`, \"gi\").test(elem.className);\r\n};","import React, { Component } from \"react\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nclass ResetModelParameters extends Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"[ResetModelParameters]:\");\r\n\r\n this.modalId = props.modalId;\r\n this.resetParametersReturn = props.resetParametersReturn;\r\n\r\n let showModal = this.showModal;\r\n setTimeout(function () {\r\n showModal();\r\n }, 100)\r\n }\r\n\r\n showModal = () => {\r\n classFunctions.addClass(document.getElementById(this.modalId), \"show\");\r\n }\r\n\r\n cancelResetParameters = () => {\r\n this.resetParametersReturn({\r\n type: \"cancel\"\r\n });\r\n }\r\n\r\n resetParameters = () => {\r\n this.resetParametersReturn({\r\n type: \"reset\"\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

Reset Model Parameters

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

Are you sure you want to reset the current model parameters to the default parameters?

\r\n\r\n
\r\n Cancel\r\n Reset Parameters\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default ResetModelParameters;","import React, { Component } from \"react\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nclass SaveModelParameters extends Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"[SaveModelParameters]:\");\r\n\r\n this.modalId = props.modalId;\r\n this.saveParametersReturn = props.saveParametersReturn;\r\n\r\n let showModal = this.showModal;\r\n setTimeout(function () {\r\n showModal();\r\n }, 100)\r\n }\r\n\r\n showModal = () => {\r\n classFunctions.addClass(document.getElementById(this.modalId), \"show\");\r\n }\r\n\r\n cancelSaveParameters = () => {\r\n this.saveParametersReturn({\r\n type: \"cancel\"\r\n });\r\n }\r\n\r\n saveParameters = () => {\r\n this.saveParametersReturn({\r\n type: \"save\"\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

Save Model Parameters

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

Are you sure you want to save the current model parameters?

\r\n\r\n
\r\n Cancel\r\n Save Parameters\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default SaveModelParameters;","import * as types from \"../actions\";\r\nimport axios from \"axios\";\r\n\r\nimport { API_URL } from \"../constants/database\";\r\n\r\n/**\r\n * GET PARAMETERS\r\n */\r\n// Initalize request event\r\nexport const requestModelParameters = () => ({\r\n type: types.GET_PARAMETERS_REQUEST\r\n});\r\n// Request success event\r\nexport const requestModelParametersSuccess = (payload) => ({\r\n type: types.GET_PARAMETERS_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestModelParametersError = (payload) => ({\r\n type: types.GET_PARAMETERS_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchModelParameters = () => (dispatch, getState) => {\r\n dispatch(requestModelParameters());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchModelParameters url=\" + API_URL);\r\n const url = `${API_URL}/modelParameter`;\r\n axios({\r\n method: \"get\",\r\n url\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: fetchModelParameters.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestModelParametersSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestModelParametersError(error))\r\n });\r\n });\r\n};\r\n\r\nexport const setModelParameters = (payload) => ({\r\n type: types.SET_PARAMETERS,\r\n payload\r\n});\r\n\r\nexport const setUpdatedModelParameters = (payload) => ({\r\n type: types.SET_UPDATED_PARAMETERS,\r\n payload\r\n});\r\n\r\nexport const setModelParametersAreDefault = (payload) => ({\r\n type: types.SET_PARAMETERS_ARE_DEFAULT,\r\n payload\r\n});\r\n\r\nexport const setModelParametersInfo = (payload) => ({\r\n type: types.SET_PARAMETERS_INFO,\r\n payload\r\n});\r\n\r\n/**\r\n * PUT PARAMETERS\r\n */\r\n// Initalize request event\r\n// Initalize request event\r\nexport const putModelParameters = () => ({\r\n type: types.PUT_PARAMETERS_REQUEST\r\n});\r\n// Request success event\r\nexport const putModelParametersSuccess = (payload) => ({\r\n type: types.PUT_PARAMETERS_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const putModelParametersError = (payload) => ({\r\n type: types.PUT_PARAMETERS_ERROR,\r\n payload\r\n});\r\n\r\nexport const deliverModelParameters = (payload) => (dispatch, getState) => {\r\n dispatch(putModelParameters());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: deliverModelParameters url=\" + API_URL);\r\n const url = `${API_URL}/newModelParameters`;\r\n axios({\r\n method: \"post\",\r\n url,\r\n data: payload\r\n })\r\n .then(function (response) {\r\n console.log(\"Action: deliverModelParameters.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(putModelParametersSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(putModelParametersError(error))\r\n });\r\n });\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as UtilFunctions from \"../js/utils\"\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nimport { MODEL_PARAMETERS_INFO } from \"../constants/defaults\";\r\n\r\nimport ResetModelParameters from \"../components/ResetModelParameters\";\r\nimport SaveModelParameters from \"../components/SaveModelParameters\";\r\nimport { fetchModelParameters, deliverModelParameters, setModelParameters, setModelParametersAreDefault, setUpdatedModelParameters, setModelParametersInfo } from \"../actions/parameters\";\r\n\r\nclass ModelParameters extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: \"\",\r\n goToHomePage: false,\r\n showSaveModal: false,\r\n showResetModal: false,\r\n savedStatus: null,\r\n truckAllowedManagedLanes: false,\r\n parametersUpdateDate: this.props.dataInfo.modelParametersUpdate,\r\n parameterStatus: this.props.parameterStatus,\r\n parameterStatusMessage: this.props.parameterStatusMessage,\r\n modelParametersAreDefault: this.props.modelParametersAreDefault,\r\n updatedModelParameters: this.props.updatedModelParameters,\r\n modelParametersInfo: this.props.modelParametersInfo,\r\n modelParameters: this.props.modelParameters\r\n }\r\n console.log(\"[ModelParameters]\");\r\n }\r\n\r\n modifiedClassName = \"modified-parameter\";\r\n saveParametersId = \"modal-save-model-parameters-window\";\r\n resetParametersId = \"modal-reset-model-parameters-window\";\r\n savedDisplay =
**Model parameters saved**
;\r\n\r\n componentDidMount() {\r\n console.log(\"ModelParameters componentDidMount\");\r\n if (!this.props.modelParameters.hasOwnProperty(\"id\")) this.props.fetchModelParameters();\r\n if (this.props.updatedModelParameters.length > 0) {\r\n console.log(\"ModelParameters componentDidMount updated params =\" + this.props.updatedModelParameters.length);\r\n this.updateModifiedScreenDisplay();\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.parameterStatus !== prevState.parameterStatus) {\r\n console.log(\"ModelParameters getDerivedStateFromProps parameterStatus = \" + nextProps.parameterStatus);\r\n if (nextProps.parameterStatus === \"RECEIVED\") {\r\n return {\r\n modelParameters: nextProps.modelParameters,\r\n updatedModelParameters: nextProps.updatedModelParameters,\r\n truckAllowedManagedLanes: nextProps.modelParameters.truckAllowedManagedLanes,\r\n parameterStatus: nextProps.parameterStatus,\r\n parameterStatusMessage: nextProps.parameterStatusMessage\r\n }\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.parameterStatus !== this.props.parameterStatus) {\r\n console.log(\"ModelParameters componentDidUpdate prev=\" + prevProps.parameterStatus + \", props=\" + this.props.parameterStatus);\r\n if (this.props.parameterStatus === \"RECEIVED\") {\r\n //console.log(\"ModelParameters componentDidUpdate=\" + this.props.parameterStatus);\r\n this.updateScreenFromReset();\r\n } else if (this.props.parameterStatus === \"ERROR\") {\r\n console.log(\"ModelParameters componentDidUpdate=\" + this.props.parameterStatus);\r\n this.setState({ error: this.props.parameterStatusMessage });\r\n }\r\n }\r\n }\r\n\r\n goToHomePage = () => {\r\n this.setState({ goToHomePage: true })\r\n }\r\n\r\n saveModelParameters = () => {\r\n this.setState({ showSaveModal: true });\r\n }\r\n\r\n hideSaveModal = () => {\r\n // Do a nice slide removal of the modal window, then remove it.\r\n classFunctions.removeClass(document.getElementById(this.saveParametersId), \"show\");\r\n let removeSaveModal = this.removeSaveModal;\r\n setTimeout(function () {\r\n removeSaveModal();\r\n }, 2000)\r\n }\r\n removeSaveModal = () => {\r\n this.setState({ showSaveModal: false });\r\n }\r\n\r\n saveParametersReturn = (result) => {\r\n this.hideSaveModal();\r\n console.log(\"saveParametersReturn type = \" + result.type);\r\n if (result.type === \"cancel\") return;\r\n\r\n let mp = this.state.modelParameters;\r\n let ump = this.state.updatedModelParameters;\r\n let areDefault = (ump.length === 0);\r\n for (let idx = 0, len = ump.length; idx < len; idx++) {\r\n if (ump[idx].stateId === \"realDiscountRate\" ||\r\n ump[idx].stateId === \"annualWageGrowthRate\" ||\r\n ump[idx].stateId === \"inflationRate\" ||\r\n ump[idx].stateId === \"annualIncreaseInRealAccidentCosts\" ||\r\n ump[idx].stateId === \"crashReductionFactorFatality\" ||\r\n ump[idx].stateId === \"crashReductionFactorInjury\" ||\r\n ump[idx].stateId === \"cO2DiscountRate\" ||\r\n ump[idx].stateId === \"freightLogisticsPremium\" ||\r\n ump[idx].stateId === \"shareTravelAuto\" ||\r\n ump[idx].stateId === \"feesSpentOutsideFloridaAverage\" ||\r\n ump[idx].stateId === \"percentPeakPeriodTraffic\" ||\r\n ump[idx].stateId === \"directionalTrafficFactor\" ||\r\n ump[idx].stateId === \"escalationRateCapitalCostInflation\" ||\r\n ump[idx].stateId === \"escalationRateOperatingCostInflation\" ||\r\n ump[idx].stateId === \"escalationRateRenewalReplacementCost\" ||\r\n ump[idx].stateId === \"escalationRateTollCollectionCost\") {\r\n mp[ump[idx].stateId] = ump[idx].stateValue / 100;\r\n } else {\r\n mp[ump[idx].stateId] = ump[idx].stateValue;\r\n }\r\n }\r\n this.setState({ modelParametersAreDefault: areDefault, savedStatus: this.savedDisplay });\r\n this.props.setModelParameters(mp);\r\n this.props.setUpdatedModelParameters(ump);\r\n this.props.setModelParametersAreDefault(areDefault);\r\n }\r\n\r\n resetParametersReturn = (result) => {\r\n this.hideResetModal();\r\n console.log(\"resetParametersReturn type = \" + result.type);\r\n if (result.type === \"cancel\") return;\r\n\r\n this.props.fetchModelParameters();\r\n }\r\n\r\n resetModelParameters = () => {\r\n this.setState({ showResetModal: true });\r\n }\r\n\r\n hideResetModal = () => {\r\n classFunctions.removeClass(document.getElementById(this.resetParametersId), \"show\");\r\n let removeResetModal = this.removeResetModal;\r\n setTimeout(function () {\r\n removeResetModal();\r\n }, 2000)\r\n }\r\n removeResetModal = () => {\r\n this.setState({ showResetModal: false });\r\n }\r\n updateScreenFromReset = () => {\r\n let ump = this.state.updatedModelParameters;\r\n if (ump.length > 0) {\r\n console.log(\"updateScreenFromReset count = \" + ump.length);\r\n for (let idx = 0, len = ump.length; idx < len; idx++) {\r\n let sid = ump[idx].stateId;\r\n let ele = document.getElementById(\"mp-\" + sid);\r\n ele.value = this.props.modelParameters[sid];\r\n classFunctions.removeClass(ele, this.modifiedClassName);\r\n }\r\n this.setState({ modelParametersAreDefault: true, updatedModelParameters: [] });\r\n this.props.setUpdatedModelParameters([]);\r\n this.props.setModelParametersAreDefault(true);\r\n }\r\n }\r\n updateModifiedScreenDisplay = () => {\r\n let ump = this.state.updatedModelParameters;\r\n if (ump.length > 0) {\r\n console.log(\"updateModifiedScreenDisplay count = \" + ump.length);\r\n for (let idx = 0, len = ump.length; idx < len; idx++) {\r\n let sid = ump[idx].stateId;\r\n let ele = document.getElementById(\"mp-\" + sid);\r\n //ele.value = this.props.modelParameters[sid];\r\n classFunctions.addClass(ele, this.modifiedClassName);\r\n }\r\n //this.setState({ modelParametersAreDefault: false, savedStatus: this.savedDisplay });\r\n this.setState({ modelParametersAreDefault: false });\r\n }\r\n }\r\n\r\n mustBeNumeric = (event) => {\r\n var code = (event.which) ? event.which : event.keyCode;\r\n // backspace, del, minus, period, 0 - 9\r\n if (code === 8 || code === 127 || code === 45 || code === 46 || (code > 47 && code < 58)) {\r\n return;\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n parameterModified = (target) => {\r\n let stateId = target.id.substring(3);\r\n let defaultValue = target.defaultValue;\r\n let ump = this.state.updatedModelParameters;\r\n\r\n if (stateId === \"truckAllowedManagedLanes\") {\r\n defaultValue = this.state.truckAllowedManagedLanes ? \"true\" : \"false\";\r\n }\r\n\r\n if (target.value === defaultValue) {\r\n // Remove parameter from the list of changed parameters\r\n for (let idx = 0, len = ump.length; idx < len; idx++) {\r\n if (ump[idx].stateId === stateId) {\r\n ump.splice(idx, 1);\r\n break;\r\n }\r\n }\r\n // Remove modified highlight\r\n if (classFunctions.hasClass(document.getElementById(target.id), this.modifiedClassName)) {\r\n classFunctions.removeClass(document.getElementById(target.id), this.modifiedClassName);\r\n }\r\n } else {\r\n // Add parameter to list of changed parameters\r\n let notFound = true;\r\n for (let idx = 0, len = ump.length; idx < len; idx++) {\r\n if (ump[idx].stateId === stateId) {\r\n ump[idx].stateValue = parseFloat(target.value);\r\n notFound = false;\r\n break;\r\n }\r\n }\r\n if (notFound) {\r\n if (stateId === \"truckAllowedManagedLanes\") {\r\n ump.push({ stateId: stateId, stateValue: target.value });\r\n } else {\r\n ump.push({ stateId: stateId, stateValue: parseFloat(target.value) });\r\n }\r\n }\r\n // Add modified highlight\r\n if (!classFunctions.hasClass(document.getElementById(target.id), this.modifiedClassName)) {\r\n classFunctions.addClass(document.getElementById(target.id), this.modifiedClassName);\r\n }\r\n }\r\n\r\n this.setState({ modelParametersAreDefault: (ump.length === 0), updatedModelParameters: ump, savedStatus: null });\r\n }\r\n\r\n // Input handlers\r\n handleInputChange = (event) => { this.parameterModified(event.target); }\r\n\r\n render() {\r\n if (this.state.goToHomePage === true) {\r\n return \r\n }\r\n if (this.state.goToProjectPage === true) {\r\n return \r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
{this.state.modelParametersAreDefault ? null : (\r\n
\r\n
**Model parameters have been modified**
\r\n Reset to Default\r\n
\r\n )}
\r\n
{this.state.modelParametersInfo.lastSaved === \"\" ?
Default parameter values updated {this.state.parametersUpdateDate}
:
Parameter values are from a saved scenario {this.state.modelParametersInfo.lastSaved}
}\r\n {this.state.modelParametersAreDefault || this.state.savedStatus ? this.state.savedStatus : (\r\n Save Model Parameters\r\n )}
\r\n
\r\n\r\n {this.state.error !== \"\" ? (\r\n
\r\n Error: {this.state.parameterStatusMessage}\r\n
\r\n ) : null}\r\n\r\n
\r\n
\r\n
\r\n

General

\r\n
Base Year
\r\n
Duration of Construction (years)
\r\n
Period of Analysis (years)
\r\n
Real Discount Rate (percent)\r\n \r\n
\r\n
Annualization Factor (days/years)
\r\n
Dollar Year for Capital Spending
\r\n
Traffic Current Year
\r\n
Traffic Forecast Year
\r\n
Annual Wage Growth Rate (percent)\r\n \r\n
\r\n
Inflation Rate (percent)\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Time and Congestion

\r\n Value of Travel Time\r\n
Auto - All Purpose ({this.props.dataInfo.dataYear}$/person-hour)
\r\n
Auto - Business ({this.props.dataInfo.dataYear}$/person-hour)
\r\n
Truck Drivers ({this.props.dataInfo.dataYear}$/person-hour)
\r\n
\r\n Average Vehicle Occupancy Rate\r\n
Auto (persons/vehicle)
\r\n
Truck (persons/vehicle)
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Safety

\r\n Unit Accident Cost\r\n
Property Damage Only (PDO) ({this.props.dataInfo.dataYear}$/damaged vehicle)
\r\n
Fatal Accident Cost (K) ({this.props.dataInfo.dataYear}$/fatality)
\r\n
Injury Accident Cost (Level Unknown) ({this.props.dataInfo.dataYear}$/injury)
\r\n
Annual Increase in Real Accident Costs (percent)\r\n \r\n
\r\n Crash Reduction Factor (CRF) for Lane Additions\r\n
Fatal (percent)\r\n \r\n
\r\n
Injury (percent)\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Vehicle Operating Costs

\r\n Auto Operating Costs\r\n
Oil Price ({this.props.dataInfo.dataYear}$/quart)
\r\n
Tire Cost ({this.props.dataInfo.dataYear}$/tire)
\r\n
Maintenance Cost ({this.props.dataInfo.dataYear}$/1,000 miles)
\r\n
Depreciation ({this.props.dataInfo.dataYear}$/vehicle)
\r\n Truck Operating Costs\r\n
Oil Price ({this.props.dataInfo.dataYear}$/quart)
\r\n
Tire Cost ({this.props.dataInfo.dataYear}$/tire)
\r\n
Maintenance Cost ({this.props.dataInfo.dataYear}$/1,000 miles)
\r\n
Depreciation ({this.props.dataInfo.dataYear}$/vehicle)
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Emissions

\r\n
NOX ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
VOC ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
PM ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
SO2 ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
CO ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
CO2 ({this.props.dataInfo.dataYear}$/metric ton)
\r\n
CO2 Discount Rate (percent)\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Freight

\r\n
Freight Logistics Premium (percent of generalized cost savings)\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Elasticities and Other ROI and EIA Assumptions

\r\n
Elasticity of Demand Relative to Travel Time Reduction
\r\n
\r\n Elasticity of Industry Output wrt Changes in Production Costs by Sector\r\n
Natural resources and mining
\r\n
Construction
\r\n
Manufacturing
\r\n
Wholesale and retail trade
\r\n
Utilities
\r\n\r\n
Information
\r\n
Financial services
\r\n
Professional and business services
\r\n
Education and health services
\r\n
Leisure and hospitality
\r\n
Other services (exc. Government)
\r\n
Transportation and Warehousing
\r\n
Government
\r\n
\r\n
Share of Business Travel - Auto (percent)\r\n \r\n
\r\n
Percent of Design & Engineering Fees Spent Outside Florida, average across all projects (percent)\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Managed Lane Assumptions

\r\n
Truck Allowed to Use Managed Lanes? \r\n \r\n
\r\n
Percent Peak Period Traffic (percent)\r\n \r\n
\r\n
Passenger Car Equivalent
\r\n
Freeway Capacity (vehicle/hour/lane)
\r\n
Duration of Peak Period (hours)
\r\n
Directional Traffic Factor (percent)\r\n \r\n
\r\n
Managed Lanes Capacity (vehicle/hour/lane)
\r\n
Managed Lanes Free Flow Speed (mph)
\r\n
Number of Managed Lanes Built (all lanes, both directions)
\r\n
\r\n
\r\n
\r\n
\r\n

Project Cost Parameters

\r\n Managed Lane Projects\r\n
Operating Period Cost ({this.props.dataInfo.dataYear}$/lane-mile)
\r\n
Renewal and Replacement Costs ({this.props.dataInfo.dataYear}$/lane-mile)
\r\n
Frequency of Renewal and Replacement Costs (number of years)
\r\n
Toll Collection Cost ({this.props.dataInfo.dataYear}$/transaction)
\r\n Cost Escalation Assumptions\r\n
Capital Cost Inflation (percent)\r\n \r\n
\r\n
Operating Period Cost Inflation (percent)\r\n \r\n
\r\n
Renewal and Replacement Cost Inflation (percent)\r\n \r\n
\r\n
Toll Collection Cost (percent)\r\n \r\n
\r\n Highway Capacity Expansion Projects\r\n
O&M Cost ({this.props.dataInfo.dataYear}$/lane-mile)
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Constraints

\r\n
Minimum Construction Costs ($)
\r\n
\r\n
\r\n
\r\n\r\n {this.state.modelParametersAreDefault ? null : (\r\n
\r\n Reset to Default\r\n {this.state.modelParametersAreDefault || this.state.savedStatus ? this.state.savedStatus : (\r\n Save Model Parameters\r\n )}\r\n
\r\n )}\r\n\r\n {this.state.showResetModal ? (\r\n
\r\n ×\r\n \r\n
\r\n ) : null}\r\n\r\n {this.state.showSaveModal ? (\r\n
\r\n ×\r\n \r\n
\r\n ) : null}\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n dataInfo: state.scenario.projects.dataInfo,\r\n modelParametersAreDefault: state.scenario.projects.modelParametersAreDefault,\r\n updatedModelParameters: state.scenario.projects.updatedModelParameters ? state.scenario.projects.updatedModelParameters : [],\r\n parameterStatus: state.scenario.projects.parameterStatus ? state.scenario.projects.parameterStatus : null,\r\n parameterStatusMessage: state.scenario.projects.parameterStatusMessage ? state.scenario.projects.parameterStatusMessage : \"\",\r\n modelParametersInfo: state.scenario.projects.modelParametersInfo ? state.scenario.projects.modelParametersInfo : MODEL_PARAMETERS_INFO,\r\n modelParameters: state.scenario.projects.modelParameters ? state.scenario.projects.modelParameters : {}\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n fetchModelParameters: () => dispatch(fetchModelParameters()),\r\n deliverModelParameters: (payload) => dispatch(deliverModelParameters(payload)),\r\n setUpdatedModelParameters: (payload) => dispatch(setUpdatedModelParameters(payload)),\r\n setModelParametersInfo: (payload) => dispatch(setModelParametersInfo(payload)),\r\n setModelParameters: (payload) => dispatch(setModelParameters(payload)),\r\n setModelParametersAreDefault: (payload) => dispatch(setModelParametersAreDefault(payload))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ModelParameters);","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { lighten } from '@material-ui/core/styles/colorManipulator';\r\n\r\nimport * as UtilFunctions from \"../js/utils\"\r\nimport imgNewScenario from \"../assets/new_scenario1.png\";\r\n\r\n/* HEADER */\r\nconst headerStyles = makeStyles(theme => ({\r\n root: {\r\n padding: \"12px 14px\"\r\n }\r\n}));\r\n\r\nfunction ScenarioTableHead(props) {\r\n const classes = headerStyles();\r\n return (\r\n \r\n \r\n Scenario Name\r\n Total Projects\r\n GP Projects\r\n ML Projects\r\n Total Cost\r\n Created By\r\n Date Created\r\n Last Saved\r\n \r\n \r\n );\r\n}\r\n\r\n/* TOOLBAR */\r\nconst useToolbarStyles = makeStyles(theme => ({\r\n root: {\r\n backgroundColor: \"#eceff1\",\r\n // paddingLeft: theme.spacing(2),\r\n // paddingRight: theme.spacing(1),\r\n padding: \"10px 16px\"\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: theme.palette.secondary.main,\r\n backgroundColor: lighten(theme.palette.secondary.light, 0.85),\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n actions: {\r\n color: theme.palette.text.secondary,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n}));\r\n\r\nconst ScenarioTableToolbar = props => {\r\n const classes = useToolbarStyles();\r\n\r\n const newScenarioReturn = props.newScenarioReturn;\r\n\r\n function goToProjectsPage() {\r\n console.log(\"Scenario Toolbar goToProjectsPage\");\r\n newScenarioReturn();\r\n }\r\n\r\n return (\r\n \r\n
\r\n Scenarios\r\n
\r\n
\"\"
Create
New Scenario
\r\n
\r\n );\r\n};\r\n\r\nconst tableStyles = makeStyles(theme => ({\r\n container: {\r\n width: \"100%\",\r\n margin: \"0\"\r\n },\r\n paper: {\r\n width: \"100%\"\r\n },\r\n row: {\r\n cursor: \"pointer\",\r\n },\r\n tableWrapper: {\r\n overflowX: \"auto\"\r\n },\r\n root: {\r\n padding: \"12px 14px\",\r\n }\r\n}));\r\n\r\nlet rows = [];\r\nlet notSelected = { id: -1 };\r\n\r\nfunction ScenarioTable(props) {\r\n //const selectedProjects = props.selectedProjects;\r\n // const [order, setOrder] = useState('asc');\r\n // const [orderBy, setOrderBy] = useState('projectID');\r\n const [selected, setSelected] = useState(notSelected);\r\n const [page, setPage] = useState(0);\r\n //const [dense, setDense] = useState(false);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n\r\n const classes = tableStyles();\r\n\r\n let resultItemChecked = props.resultItemChecked;\r\n let newScenarioReturn = props.newScenarioReturn;\r\n\r\n rows = props.scenarioData;\r\n\r\n function handleClick(event, row) {\r\n setSelected(row);\r\n resultItemChecked(row);\r\n }\r\n\r\n function changePage() { }\r\n\r\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage);\r\n\r\n if (rows.length === 0) {\r\n return (
Retrieving saved scenarios...
);\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 {rows.map(row => {\r\n return (\r\n handleClick(event, row)}\r\n >\r\n {row.scenarioName}\r\n {row.gpProjects + row.mlProjects}\r\n {row.gpProjects}\r\n {row.mlProjects}\r\n {UtilFunctions.formatNumber(row.totalCost, 0, true)}\r\n {row.createdBy}\r\n {row.dateCreated}\r\n {row.lastSaved}\r\n \r\n );\r\n })}\r\n {emptyRows > 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\nScenarioTable.propTypes = {\r\n};\r\nexport default ScenarioTable;","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nimport { copyScenario, setSelectedScenario } from \"../actions/scenarios\";\r\n\r\nclass ScenarioSelected extends Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"[ScenarioSelected]: \" + props.chosenScenario.id);\r\n\r\n this.state = {\r\n error: \"\",\r\n showScenarioSelected: true,\r\n showSavingSplash: false,\r\n selectedScenario: props.chosenScenario,\r\n copyScenarioName: \"Copy of \" + props.chosenScenario.scenarioName,\r\n copyScenarioDesc: props.chosenScenario.description,\r\n userName: this.props.userInfo.name,\r\n copyStatus: this.props.copyStatus,\r\n copyStatusMessage: this.props.copyStatusMessage,\r\n copyScenarioResults: this.props.copyScenarioResults\r\n }\r\n\r\n this.selectedScenario = props.chosenScenario;\r\n this.selectedScenarioReturn = props.selectedScenarioReturn;\r\n\r\n let showModal = this.showModal;\r\n setTimeout(function () {\r\n showModal();\r\n }, 100)\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n console.log(\"ScenarioSelected getDerivedStateFromProps copyStatus = \" + nextProps.copyStatus);\r\n if (nextProps.copyStatus !== prevState.copyStatus) {\r\n return {\r\n copyStatus: nextProps.copyStatus,\r\n copyStatusMessage: nextProps.copyStatusMessage\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.copyStatus !== this.props.copyStatus) {\r\n if (this.props.copyStatus === \"ERROR\") {\r\n console.log(\"ScenarioSelected componentDidUpdate=\" + this.props.copyStatus);\r\n this.setState({ error: this.props.copyStatusMessage });\r\n } else if (this.props.copyStatus === \"COPIED\") {\r\n console.log(\"ScenarioSelected componentDidUpdate=\" + this.props.copyStatus);\r\n this.props.setSelectedScenario(this.props.copyScenarioResults);\r\n this.loadScenarioCopy();\r\n }\r\n }\r\n }\r\n\r\n showModal() {\r\n classFunctions.addClass(document.getElementById(\"modal-scenario-window\"), \"show\");\r\n }\r\n\r\n deleteScenario = () => {\r\n this.selectedScenarioReturn({ type: \"delete\" });\r\n }\r\n\r\n loadScenario = () => {\r\n this.selectedScenarioReturn({ type: \"load\" });\r\n }\r\n\r\n loadScenarioCopy = () => {\r\n this.selectedScenarioReturn({ type: \"copy\" });\r\n }\r\n\r\n copyScenario = () => {\r\n this.setState({ showScenarioSelected: false });\r\n }\r\n\r\n cancelCopy = () => {\r\n this.setState({ showScenarioSelected: true });\r\n }\r\n\r\n saveScenario = () => {\r\n console.log(\"saveScenario...\");\r\n if (this.state.copyScenarioName === \"\") {\r\n this.setState({ error: \"Scenario name cannot be blank.\" });\r\n return;\r\n } else if (this.state.copyScenario === this.selectedScenario.scenarioName) {\r\n this.setState({ error: \"Copied scenario cannot have the same name as the original.\" });\r\n return;\r\n } else if (this.state.copyScenarioDesc === \"\") {\r\n this.setState({ error: \"Scenario description cannot be blank.\" });\r\n return;\r\n }\r\n\r\n this.setState({ showSavingSplash: true });\r\n\r\n let payload = {\r\n selectedId: this.selectedScenario.id,\r\n copyItems: {\r\n scenarioName: this.state.copyScenarioName,\r\n description: this.state.copyScenarioDesc,\r\n createdBy: this.state.userName\r\n }\r\n }\r\n this.props.copyScenario(payload);\r\n }\r\n\r\n handleNameChange = (event) => {\r\n this.setState({ copyScenarioName: event.target.value });\r\n }\r\n\r\n handleDescChange = (event) => {\r\n this.setState({ copyScenarioDesc: event.target.value });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.state.showScenarioSelected ? (\r\n
\r\n

Scenario Selected

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

{this.state.selectedScenario.scenarioName}

\r\n\r\n

{this.state.selectedScenario.description}

\r\n\r\n {this.state.userName === this.state.selectedScenario.createdBy ? (Delete This Scenario) : null}\r\n Copy This Scenario\r\n Load This Scenario\r\n
\r\n ) : (\r\n
\r\n

Copy Scenario

\r\n\r\n
\r\n
New scenario name:
\r\n \r\n
\r\n
\r\n
New scenario description:
\r\n \r\n
\r\n\r\n {this.state.showSavingSplash ? (\r\n
Copying scenario...
\r\n ) : (\r\n
\r\n Cancel\r\n Save as New Scenario\r\n
\r\n )}\r\n\r\n
\r\n )}\r\n\r\n {!this.state.showScenarioSelected && this.state.error !== \"\" ? (\r\n
\r\n Error: {this.state.error}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n userInfo: state.scenario.projects.userInfo,\r\n copyStatus: state.scenario.projects.copyStatus ? state.scenario.projects.copyStatus : null,\r\n copyStatusMessage: state.scenario.projects.copyStatusMessage ? state.scenario.projects.copyStatusMessage : \"\",\r\n copyScenarioResults: state.scenario.projects.copyScenarioResults ? state.scenario.projects.copyScenarioResults : null\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n copyScenario: (payload) => dispatch(copyScenario(payload)),\r\n setSelectedScenario: (payload) => dispatch(setSelectedScenario(payload)),\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ScenarioSelected);","import React, { Component } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport ScenarioTable from \"../components/ScenarioTable\";\r\nimport ScenarioSelected from \"../components/ScenarioSelected\";\r\nimport { fetchSavedScenarios, setSelectedScenario, setReloadScenarios, deleteScenario } from \"../actions/scenarios\";\r\nimport { setSelectedProjects, setScenarioProjects, setNewProjects } from \"../actions/projects\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nimport imgSavedScenarios from \"../assets/saved_scenarios.png\";\r\n\r\nclass Scenarios extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: \"\",\r\n goToParametersPage: false,\r\n goToProjectPage: false,\r\n showScenarioSelectedModal: false,\r\n reloadScenarios: this.props.reloadScenarios,\r\n selectedScenario: { scenarioName: \"\", description: \"\" },\r\n savedScenarios: this.props.savedScenarios\r\n }\r\n console.log(\"[Scenarios]\");\r\n }\r\n\r\n componentDidMount() {\r\n console.log(\"Scenarios scenarios = \" + this.props.savedScenarios.length);\r\n if (this.props.savedScenarios.length === 0) this.props.fetchSavedScenarios();\r\n if (this.props.reloadScenarios) {\r\n this.props.setReloadScenarios(false);\r\n this.props.fetchSavedScenarios();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.deleteStatus !== this.props.deleteStatus) {\r\n if (this.props.deleteStatus === \"ERROR\") {\r\n console.log(\"Scenario componentDidUpdate=\" + this.props.deleteStatus);\r\n this.setState({ error: this.props.deleteStatusMessage });\r\n } else if (this.props.deleteStatus === \"DELETED\") {\r\n console.log(\"Scenario componentDidUpdate=\" + this.props.deleteStatus);\r\n this.props.fetchSavedScenarios();\r\n }\r\n }\r\n }\r\n\r\n goToParametersPage = () => {\r\n this.setState({ goToParametersPage: true });\r\n }\r\n\r\n goToProjectPage = () => {\r\n this.props.setScenarioProjects([]);\r\n this.setState({ goToProjectPage: true });\r\n }\r\n\r\n launchModal = () => {\r\n this.setState({ showScenarioSelectedModal: true });\r\n }\r\n\r\n hideModal = () => {\r\n // Do a nice slide removal of the modal window, then remove it.\r\n classFunctions.removeClass(document.getElementById(\"modal-scenario-window\"), \"show\");\r\n let removeModal = this.removeModal;\r\n setTimeout(function () {\r\n removeModal();\r\n }, 2000)\r\n }\r\n removeModal = () => {\r\n this.setState({ showScenarioSelectedModal: false });\r\n }\r\n\r\n newScenarioReturn = () => {\r\n this.props.setSelectedScenario(null);\r\n this.props.setSelectedProjects([]);\r\n this.props.setScenarioProjects([]);\r\n this.props.setNewProjects([]);\r\n this.setState({ goToProjectPage: true });\r\n }\r\n\r\n selectedScenarioReturn = (result) => {\r\n let scenario = this.state.selectedScenario;\r\n if (result.type === \"copy\") {\r\n this.goToProjectPage();\r\n return;\r\n }\r\n if (result.type === \"load\") {\r\n this.props.setSelectedScenario(scenario);\r\n this.goToProjectPage();\r\n return;\r\n }\r\n if (result.type === \"delete\") {\r\n this.props.deleteScenario(scenario.id);\r\n this.hideModal();\r\n return;\r\n }\r\n }\r\n\r\n resultItemChecked = (item) => {\r\n if (item.id === -1) {\r\n this.setState({ selectedScenario: { scenarioName: \"\", description: \"\" } });\r\n } else {\r\n this.setState({ selectedScenario: item, showScenarioSelectedModal: true });\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.goToParametersPage === true) {\r\n return \r\n }\r\n if (this.state.goToProjectPage === true) {\r\n return \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 Choose a saved scenario\r\n

\r\n
\r\n\r\n {this.state.error !== \"\" ? (\r\n
\r\n Error: {this.state.error}\r\n
\r\n ) : null}\r\n\r\n \r\n\r\n {this.state.showScenarioSelectedModal ? (\r\n
\r\n ×\r\n \r\n
\r\n ) : null}\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n savedScenarios: state.scenario.projects.savedScenarios ? state.scenario.projects.savedScenarios : [],\r\n selectedScenario: state.scenario.projects.selectedScenario ? state.scenario.projects.selectedScenario : { scenarioName: \"\", description: \"\" },\r\n reloadScenarios: state.scenario.projects.reloadScenarios ? state.scenario.projects.reloadScenarios : false,\r\n deleteStatus: state.scenario.projects.deleteStatus ? state.scenario.projects.deleteStatus : null,\r\n deleteStatusMessage: state.scenario.projects.deleteStatusMessage ? state.scenario.projects.deleteStatusMessage : \"\"\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n fetchSavedScenarios: () => dispatch(fetchSavedScenarios()),\r\n deleteScenario: (payload) => dispatch(deleteScenario(payload)),\r\n setReloadScenarios: (payload) => dispatch(setReloadScenarios(payload)),\r\n setScenarioProjects: (payload) => dispatch(setScenarioProjects(payload)),\r\n setSelectedScenario: (payload) => dispatch(setSelectedScenario(payload)),\r\n setSelectedProjects: (payload) => dispatch(setSelectedProjects(payload)),\r\n setNewProjects: (payload) => dispatch(setNewProjects(payload))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Scenarios);","import React, { useState } from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\n\r\nimport * as UtilFunctions from \"../js/utils\"\r\n\r\nfunction desc(a, b, orderBy) {\r\n if (b[orderBy] < a[orderBy]) {\r\n return -1;\r\n }\r\n if (b[orderBy] > a[orderBy]) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\nfunction stableSort(array, cmp) {\r\n const stabilizedThis = array.map((el, index) => [el, index]);\r\n stabilizedThis.sort((a, b) => {\r\n const order = cmp(a[0], b[0]);\r\n if (order !== 0) return order;\r\n return a[1] - b[1];\r\n });\r\n return stabilizedThis.map(el => el[0]);\r\n}\r\n\r\nfunction getSorting(order, orderBy) {\r\n return order === 'desc' ? (a, b) => desc(a, b, orderBy) : (a, b) => -desc(a, b, orderBy);\r\n}\r\n\r\nlet rows = [];\r\nconst headRows = [\r\n { id: 'segment', numeric: true, disablePadding: true, label: 'Project ID' },\r\n { id: 'localName', numeric: false, disablePadding: false, label: 'Project Name' },\r\n { id: 'description', numeric: false, disablePadding: false, label: 'Project Description' },\r\n { id: 'improvement', numeric: false, disablePadding: false, label: 'Improvement Type' },\r\n { id: 'sisModeDescription', numeric: false, disablePadding: false, label: 'Mode' },\r\n { id: 'district', numeric: true, disablePadding: false, label: 'District' },\r\n { id: 'firstYearSpending', numeric: true, disablePadding: false, label: 'First Year of Spending' },\r\n { id: 'totalPreliminaryEngineering', numeric: true, disablePadding: false, label: 'D&E' },\r\n { id: 'totalRightOfWay', numeric: true, disablePadding: false, label: 'RW' },\r\n { id: 'totalConstruction', numeric: true, disablePadding: false, label: 'CON' },\r\n { id: 'totalCost', numeric: true, disablePadding: false, label: 'Total' },\r\n { id: 'effectiveDistance', numeric: true, disablePadding: false, label: 'Distance' },\r\n { id: 'aadtCurrent', numeric: true, disablePadding: false, label: 'AADT' },\r\n { id: 'truckAADTCurrent', numeric: true, disablePadding: false, label: 'Truck AADT' },\r\n { id: 'msvCurrent', numeric: true, disablePadding: false, label: 'Daily Capacity' },\r\n { id: 'avgerageMaxSpeed', numeric: true, disablePadding: false, label: 'Free Flow Speed' },\r\n { id: 'lanesCurrent', numeric: true, disablePadding: false, label: 'Lanes' },\r\n { id: 'fatalityAverage', numeric: true, disablePadding: false, label: 'Annual Fatalities' },\r\n { id: 'injuryAverage', numeric: true, disablePadding: false, label: 'Annual Injuries' },\r\n { id: 'aadT_FRC_NB', numeric: true, disablePadding: false, label: 'AADT' },\r\n { id: 'aadT_FRCT2_BD', numeric: true, disablePadding: false, label: 'AADT' },\r\n { id: 'trucK_AADT_FRCT2_BD', numeric: true, disablePadding: false, label: 'Truck AADT' },\r\n { id: 'msV_FRC2_BD', numeric: true, disablePadding: false, label: 'Capacity Reported' },\r\n { id: 'msvCalculated', numeric: true, disablePadding: false, label: 'Capacity Expected' },\r\n { id: 'finalLanes', numeric: true, disablePadding: false, label: 'Lanes' }\r\n];\r\n\r\nconst header0Styles = makeStyles(theme => ({\r\n root: {\r\n padding: \"5px\"\r\n },\r\n head: {\r\n color: \"#333\",\r\n backgroundColor: \"#ccc\",\r\n padding: \"5px 10px\",\r\n lineHeight: \"1rem\",\r\n textAlign: \"center\",\r\n border: \"1px solid #999\"\r\n }\r\n}));\r\nfunction ProjectTableHead0WithProps(props) {\r\n const classes = header0Styles();\r\n return (\r\n \r\n \r\n \r\n Project Capital Cost Spending, ${props.dataInfo.dataYear} (000's)\r\n \r\n Current Conditions\r\n No Build Forecast\r\n Build Forecast\r\n \r\n \r\n );\r\n}\r\nconst mapStateToProps = state => ({ dataInfo: state.scenario.projects.dataInfo });\r\nconst ProjectTableHead0 = connect(mapStateToProps)(ProjectTableHead0WithProps);\r\n\r\nconst header1Styles = makeStyles(theme => ({\r\n root: {\r\n padding: \"5px\"\r\n },\r\n head: {\r\n color: \"#333\",\r\n backgroundColor: \"#eee\",\r\n padding: \"5px 10px\",\r\n border: \"1px solid #999\"\r\n },\r\n paddingCheckbox: {\r\n backgroundColor: \"#eee\",\r\n border: \"1px solid #999\"\r\n },\r\n checkbox: {\r\n color: \"#090 !important\"\r\n }\r\n}));\r\nfunction ProjectTableHead1(props) {\r\n const { onSelectAllClick, order, orderBy, numSelected, rowCount, onRequestSort } = props;\r\n const createSortHandler = property => event => {\r\n onRequestSort(event, property);\r\n };\r\n const classes = header1Styles();\r\n\r\n return (\r\n \r\n \r\n \r\n 0 && numSelected < rowCount}\r\n checked={numSelected === rowCount}\r\n onChange={onSelectAllClick}\r\n //color=\"primary\"\r\n />\r\n \r\n {headRows.map(row => (\r\n \r\n \r\n {row.label}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nProjectTableHead1.propTypes = {\r\n numSelected: PropTypes.number.isRequired,\r\n onRequestSort: PropTypes.func.isRequired,\r\n onSelectAllClick: PropTypes.func.isRequired,\r\n order: PropTypes.string.isRequired,\r\n orderBy: PropTypes.string.isRequired,\r\n rowCount: PropTypes.number.isRequired,\r\n};\r\n\r\nconst useToolbarStyles = makeStyles(theme => ({\r\n root: {\r\n minHeight: \"48px\",\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(1),\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: \"#1976d2\",\r\n backgroundColor: \"#f9f9f9\",\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n actions: {\r\n color: theme.palette.text.secondary,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n subtitle1: {\r\n fontSize: \"1.1rem\"\r\n }\r\n}));\r\n\r\nlet segmentQuery = \"\";\r\nconst ProjectTableToolbar = props => {\r\n const classes = useToolbarStyles();\r\n\r\n const numSelected = props.numSelected;\r\n const returnQueryValue = props.returnQueryValue;\r\n\r\n function setQueryValue(qv) {\r\n console.log(\"setQueryValue=\"+qv);\r\n segmentQuery = qv;\r\n returnQueryValue(qv);\r\n }\r\n\r\n return (\r\n 0,\r\n })}\r\n >\r\n
\r\n {numSelected > 0 ? (\r\n \r\n Projects selected: {numSelected}\r\n \r\n ) : (\r\n \r\n Projects\r\n \r\n )}\r\n
\r\n
setQueryValue(e.target.value)} />
\r\n \r\n );\r\n};\r\n\r\nProjectTableToolbar.propTypes = {\r\n numSelected: PropTypes.number.isRequired,\r\n};\r\n\r\nconst tableStyles = makeStyles(theme => ({\r\n container: {\r\n width: \"100%\",\r\n margin: \"24px 0 0\"\r\n },\r\n paper: {\r\n width: \"100%\"\r\n },\r\n table: {\r\n minWidth: 4000,\r\n },\r\n tableWrapper: {\r\n overflowX: \"auto\"\r\n },\r\n root: {\r\n padding: \"5px 10px\",\r\n borderLeft: \"1px solid #e0e0e0\"\r\n },\r\n checkbox: {\r\n color: \"#090 !important\"\r\n }\r\n}));\r\n\r\nfunction ProjectTable(props) {\r\n const [order, setOrder] = useState('asc');\r\n const [orderBy, setOrderBy] = useState('segment');\r\n const [page, setPage] = useState(0);\r\n const [dense, setDense] = useState(false);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n const [segmentQueryNotUsed, setSegmentQuery] = useState(\"\"); // This is only used for a state change so the UI will refresh\r\n \r\n const classes = tableStyles();\r\n\r\n let selected = props.selectedProjects;\r\n let unselectSegment = props.unselectSegment;\r\n let updateSelectedProjects = props.updateSelectedProjects;\r\n let totalRows = props.projectData.length;\r\n rows = props.projectData.filter(item => item[\"segment\"].toString().indexOf(segmentQuery) > -1);\r\n\r\n if (unselectSegment > -1) {\r\n let selectedIdx = -1;\r\n for (let idx = 0, len = selected.length; idx < len; idx++) {\r\n if (selected[idx].segment === unselectSegment) {\r\n selectedIdx = idx;\r\n break;\r\n }\r\n }\r\n if (selectedIdx > -1 ) selected.splice(selectedIdx, 1);\r\n }\r\n\r\n function handleRequestSort(event, property) {\r\n const isDesc = orderBy === property && order === 'desc';\r\n setOrder(isDesc ? 'asc' : 'desc');\r\n setOrderBy(property);\r\n }\r\n\r\n function handleSelectAllClick(event) {\r\n selected.length = 0;\r\n if (event.target.checked) {\r\n for (let idx = 0, len = rows.length; idx < len; idx++) {\r\n let item = {\r\n \"segment\": rows[idx].segment,\r\n \"localName\": rows[idx].localName,\r\n \"improvement\": rows[idx].improvement,\r\n \"district\": rows[idx].district,\r\n \"totalCost\": parseInt(rows[idx].totalCost)\r\n };\r\n selected.push(item);\r\n }\r\n }\r\n updateSelectedProjects(selected);\r\n }\r\n\r\n function handleClick(event, row) {\r\n let selectedIdx = isSelected(row.segment);\r\n\r\n if (selectedIdx === -1) {\r\n let item = {\r\n \"segment\": row.segment,\r\n \"localName\": row.localName,\r\n \"improvement\": row.improvement,\r\n \"district\": row.district,\r\n \"totalCost\": parseInt(row.totalCost)\r\n };\r\n selected.push(item);\r\n } else {\r\n selected.splice(selectedIdx, 1);\r\n }\r\n updateSelectedProjects(selected);\r\n }\r\n\r\n function handleChangePage(event, newPage) {\r\n setPage(newPage);\r\n }\r\n\r\n function handleChangeRowsPerPage(event) {\r\n setRowsPerPage(+event.target.value);\r\n }\r\n\r\n function handleChangeDense(event) {\r\n setDense(event.target.checked);\r\n }\r\n\r\n function isSelected(segment, localName, improvement, district, totalCost) {\r\n let selectedIdx = -1;\r\n for (let idx = 0, len = selected.length; idx < len; idx++) {\r\n if (selected[idx].segment === segment) {\r\n selectedIdx = idx;\r\n selected[idx].localName = localName;\r\n selected[idx].improvement = improvement;\r\n selected[idx].district = district;\r\n selected[idx].totalCost = totalCost;\r\n break;\r\n }\r\n }\r\n return selectedIdx;\r\n }\r\n\r\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage);\r\n\r\n if (totalRows === 0) {\r\n return (
Retrieving project data...
);\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 {stableSort(rows, getSorting(order, orderBy))\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map(row => {\r\n const isItemSelected = (isSelected(row.segment, row.localName, row.improvement, row.district, row.totalCost) > -1);\r\n return (\r\n handleClick(event, row)}\r\n role=\"checkbox\"\r\n aria-checked={isItemSelected}\r\n tabIndex={-1}\r\n key={row.segment}\r\n selected={isItemSelected}\r\n >\r\n {isItemSelected ?\r\n () :\r\n ()\r\n }\r\n {row.segment}\r\n {row.localName}\r\n {row.description}\r\n {row.improvement}\r\n {row.sisModeDescription}\r\n {row.district}\r\n {row.firstYearSpending}\r\n {UtilFunctions.formatNumber(row.totalPreliminaryEngineering + row.totalEnvironmental + row.totalProjectDevelopmentEnvironment, 0, true)}\r\n {UtilFunctions.formatNumber(row.totalRightOfWay, 0, true)}\r\n {UtilFunctions.formatNumber(row.totalConstruction, 0, true)}\r\n {UtilFunctions.formatNumber(row.totalCost, 0, true)}\r\n {UtilFunctions.formatNumber(row.effectiveDistance, 2)}\r\n {UtilFunctions.formatNumber(row.aadtCurrent, 0)}\r\n {UtilFunctions.formatNumber(row.truckAADTCurrent, 0)}\r\n {UtilFunctions.formatNumber(row.msvCurrent, 0)}\r\n {row.avgerageMaxSpeed}\r\n {row.lanesCurrent}\r\n {UtilFunctions.formatNumber(row.fatalityAverage, 1)}\r\n {UtilFunctions.formatNumber(row.injuryAverage, 1)}\r\n {UtilFunctions.formatNumber(row.aadT_FRC_NB, 0)}\r\n {UtilFunctions.formatNumber(row.aadT_FRCT2_BD, 0)}\r\n {UtilFunctions.formatNumber(row.trucK_AADT_FRCT2_BD, 0)}\r\n {UtilFunctions.formatNumber(row.msV_FRC2_BD, 0)}\r\n {UtilFunctions.formatNumber(row.msvCalculated, 0)}\r\n {row.finalLanes}\r\n \r\n );\r\n })}\r\n {emptyRows > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n
\r\n }\r\n label=\"Condense row display\"\r\n />\r\n
\r\n );\r\n}\r\n\r\nProjectTable.propTypes = {\r\n projectData: PropTypes.array.isRequired\r\n};\r\nexport default ProjectTable;","import React, { Component } from \"react\";\r\nimport * as classFunctions from \"../js/classfunctions\";\r\nimport * as UtilFunctions from \"../js/utils\"\r\n\r\nclass AddProject extends Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"[AddProject]: \" + props.segment);\r\n\r\n this.state = {\r\n error: \"\",\r\n isCandidate: false,\r\n segment: \"\",\r\n name: \"\",\r\n description: \"\",\r\n mode: \"Highways\",\r\n type: \"A1-2\",\r\n distance: \"0\",\r\n district: \"1\",\r\n totalPreliminaryEngineering: \"0\",\r\n totalEnvironmental: \"0\",\r\n totalProjectDevelopmentEnvironment: \"0\",\r\n deCost: \"$0\",\r\n rowCost: \"0\",\r\n conCost: \"0\",\r\n totalCost: \"$0\",\r\n startYear: \"2018\",\r\n duration: \"20\",\r\n aadtCurrent: \"0\",\r\n aadtForecast: \"0\",\r\n aadtNoBuild: \"0\",\r\n aadtTruckCurrent: \"0\",\r\n aadtTruckForecast: \"0\",\r\n capacityCurrent: \"0\",\r\n capacityForecast: \"0\",\r\n speedCurrent: \"0\",\r\n lanesCurrent: \"0\",\r\n lanesForecast: \"0\",\r\n managedLanesForecast: \"0\",\r\n fatalitiesCurrent: \"0\",\r\n injuriesCurrent: \"0\"\r\n }\r\n\r\n this.loadedProjects = props.loadedProjects;\r\n this.newProjects = props.newProjects;\r\n this.addProjectReturn = props.addProjectReturn;\r\n\r\n let showModal = this.showModal;\r\n setTimeout(function () {\r\n showModal();\r\n }, 100)\r\n }\r\n\r\n removeModal = () => {\r\n this.addProjectReturn(null);\r\n }\r\n\r\n showModal() {\r\n classFunctions.addClass(document.getElementById(\"modal-add-project-window\"), \"show\");\r\n }\r\n\r\n saveNewProject = () => {\r\n console.log(\"saveNewProject...\");\r\n if (this.state.segment === \"\") {\r\n this.setState({ error: \"Project Id is required.\" });\r\n } else if (this.state.name === \"\") {\r\n this.setState({ error: \"Project name cannot be blank.\" });\r\n } else if (this.state.description === \"\") {\r\n this.setState({ error: \"Project description cannot be blank.\" });\r\n } else if (this.state.distance < 0.001) {\r\n this.setState({ error: \"Project length must be greater than 0.001\" });\r\n // } else if (this.state.startYear < 2018) {\r\n // this.setState({ error: \"Project start year must be greater than 2017.\" });\r\n } else if (this.state.duration < 1) {\r\n this.setState({ error: \"Project duration must be greater than 0.\" });\r\n // } else if (this.state.lanesCurrent < 1) {\r\n // this.setState({ error: \"Project current lanes must be greater than 0.\" });\r\n } else {\r\n let segment = parseInt(this.state.segment);\r\n let np = this.newProjects;\r\n for (let idx = 0, len = np.length; idx < len; idx++) {\r\n if (np[idx].segment === segment) {\r\n this.setState({ error: \"A new project with this Id already exists.\" });\r\n return;\r\n }\r\n }\r\n let newProj = {\r\n segment: parseInt(this.state.segment),\r\n localName: this.state.name,\r\n description: this.state.description,\r\n sisModeDescription: \"Highways\",\r\n improvement: this.state.type,\r\n effectiveDistance: parseFloat(this.state.distance),\r\n district: parseInt(this.state.district),\r\n firstYearSpending: parseInt(this.state.startYear),\r\n duration: parseInt(this.state.duration),\r\n totalPreliminaryEngineering: parseFloat(this.state.totalPreliminaryEngineering),\r\n totalEnvironmental: parseFloat(this.state.totalEnvironmental),\r\n totalProjectDevelopmentEnvironment: parseFloat(this.state.totalProjectDevelopmentEnvironment),\r\n deCost: parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.totalProjectDevelopmentEnvironment),\r\n rowCost: parseFloat(this.state.rowCost),\r\n conCost: parseFloat(this.state.conCost),\r\n totalCost: parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.totalProjectDevelopmentEnvironment) + parseFloat(this.state.rowCost) + parseFloat(this.state.conCost),\r\n aadtCurrent: parseInt(this.state.aadtCurrent),\r\n aadtForecast: parseInt(this.state.aadtForecast),\r\n aadtForecastNB: parseInt(this.state.aadtNoBuild),\r\n truckAadtCurrent: parseInt(this.state.aadtTruckCurrent),\r\n trucKAadtForecast: parseInt(this.state.aadtTruckForecast),\r\n capacityCurrent: parseInt(this.state.capacityCurrent),\r\n capacityForecast: parseInt(this.state.capacityForecast),\r\n freeFlowSpeed: parseInt(this.state.speedCurrent),\r\n lanesCurrent: parseInt(this.state.lanesCurrent),\r\n lanesForecast: parseInt(this.state.lanesForecast),\r\n managedLanesForecast: parseInt(this.state.managedLanesForecast),\r\n annualFatalities: parseFloat(this.state.fatalitiesCurrent),\r\n annualInjuries: parseFloat(this.state.injuriesCurrent)\r\n };\r\n\r\n this.addProjectReturn(newProj);\r\n }\r\n }\r\n\r\n mustBeNumeric = (event) => {\r\n var code = (event.which) ? event.which : event.keyCode;\r\n // backspace, del, minus, period, 0 - 9\r\n if (code === 8 || code === 127 || code === 45 || code === 46 || (code > 47 && code < 58)) {\r\n return;\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleInputChange = (event) => {\r\n let cost, deCost, totalCost;\r\n let id = event.target.id.substring(3);\r\n let stateObj = { [id]: event.target.value };\r\n if (this.state.error !== \"\") stateObj.error = \"\";\r\n \r\n switch (id) {\r\n case \"totalPreliminaryEngineering\": {\r\n cost = parseFloat(event.target.value);\r\n deCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.totalProjectDevelopmentEnvironment), 0);\r\n totalCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.conCost) + parseFloat(this.state.rowCost), 0);\r\n stateObj.deCost = deCost;\r\n stateObj.totalCost = totalCost;\r\n break;\r\n }\r\n case \"totalEnvironmental\": {\r\n cost = parseFloat(event.target.value);\r\n deCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalProjectDevelopmentEnvironment), 0);\r\n totalCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.conCost) + parseFloat(this.state.rowCost), 0);\r\n stateObj.deCost = deCost;\r\n stateObj.totalCost = totalCost;\r\n break;\r\n }\r\n case \"totalProjectDevelopmentEnvironment\": {\r\n cost = parseFloat(event.target.value);\r\n deCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalEnvironmental), 0);\r\n totalCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.conCost) + parseFloat(this.state.rowCost), 0);\r\n stateObj.deCost = deCost;\r\n stateObj.totalCost = totalCost;\r\n break;\r\n }\r\n case \"rowCost\": {\r\n cost = parseFloat(event.target.value);\r\n totalCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.totalProjectDevelopmentEnvironment) + parseFloat(this.state.conCost), 0);\r\n stateObj.totalCost = totalCost;\r\n break;\r\n }\r\n case \"conCost\": {\r\n cost = parseFloat(event.target.value);\r\n totalCost = \"$\" + UtilFunctions.formatNumber(cost + parseFloat(this.state.totalPreliminaryEngineering) + parseFloat(this.state.totalEnvironmental) + parseFloat(this.state.totalProjectDevelopmentEnvironment) + parseFloat(this.state.rowCost), 0);\r\n stateObj.totalCost = totalCost;\r\n break;\r\n }\r\n }\r\n this.setState(stateObj);\r\n }\r\n\r\n checkProjectIdType = () => {\r\n console.log(\"checkProjectIdType=\" + this.loadedProjects.length);\r\n let stateParams = { isCandidate: false };\r\n let segment = parseInt(this.state.segment);\r\n let lp = this.loadedProjects;\r\n for (let idx = 0, len = lp.length; idx < len; idx++) {\r\n if (lp[idx].segment === segment) {\r\n stateParams.isCandidate = true;\r\n stateParams.name = lp[idx].localName;\r\n document.getElementById(\"ap-name\").value = stateParams.name;\r\n stateParams.description = lp[idx].description;\r\n document.getElementById(\"ap-description\").value = stateParams.description;\r\n //document.getElementById(\"ap-mode\").value = lp[idx].sisModeDescription;\r\n stateParams.type = lp[idx].improvement;\r\n document.getElementById(\"ap-type\").value = stateParams.type;\r\n stateParams.distance = lp[idx].effectiveDistance;\r\n document.getElementById(\"ap-distance\").value = stateParams.distance;\r\n stateParams.district = lp[idx].district;\r\n document.getElementById(\"ap-district\").value = stateParams.district;\r\n\r\n stateParams.totalPreliminaryEngineering = lp[idx].totalPreliminaryEngineering;\r\n document.getElementById(\"ap-totalPreliminaryEngineering\").value = parseInt(lp[idx].totalPreliminaryEngineering);\r\n stateParams.totalEnvironmental = lp[idx].totalEnvironmental;\r\n document.getElementById(\"ap-totalEnvironmental\").value = parseInt(lp[idx].totalEnvironmental);\r\n stateParams.totalProjectDevelopmentEnvironment = lp[idx].totalProjectDevelopmentEnvironment;\r\n document.getElementById(\"ap-totalProjectDevelopmentEnvironment\").value = parseInt(lp[idx].totalProjectDevelopmentEnvironment);\r\n stateParams.deCost = \"$\" + UtilFunctions.formatNumber(lp[idx].totalPreliminaryEngineering + lp[idx].totalEnvironmental + lp[idx].totalProjectDevelopmentEnvironment, 0);\r\n document.getElementById(\"ap-deCost\").value = stateParams.deCost;\r\n\r\n stateParams.rowCost = lp[idx].totalRightOfWay;\r\n document.getElementById(\"ap-rowCost\").value = parseInt(stateParams.rowCost);\r\n stateParams.conCost = lp[idx].totalConstruction;\r\n document.getElementById(\"ap-conCost\").value = parseInt(stateParams.conCost);\r\n stateParams.startYear = lp[idx].firstYearSpending;\r\n document.getElementById(\"ap-startYear\").value = stateParams.startYear;\r\n //document.getElementById(\"ap-duration\").value = lp[idx].???;\r\n stateParams.totalCost = \"$\" + UtilFunctions.formatNumber(lp[idx].totalCost, 0);\r\n \r\n stateParams.aadtCurrent = lp[idx].aadtCurrent;\r\n document.getElementById(\"ap-aadtCurrent\").value = parseInt(lp[idx].aadtCurrent);\r\n stateParams.aadtForecast = lp[idx].aadT_FRCT2_BD;\r\n document.getElementById(\"ap-aadtForecast\").value = parseInt(lp[idx].aadT_FRCT2_BD);\r\n stateParams.aadtNoBuild = lp[idx].aadT_FRC_NB;\r\n document.getElementById(\"ap-aadtNoBuild\").value = parseInt(lp[idx].aadT_FRC_NB);\r\n stateParams.aadtTruckCurrent = lp[idx].truckAADTCurrent;\r\n document.getElementById(\"ap-aadtTruckCurrent\").value = parseInt(lp[idx].truckAADTCurrent);\r\n stateParams.aadtTruckForecast = lp[idx].trucK_AADT_FRCT2_BD;\r\n document.getElementById(\"ap-aadtTruckForecast\").value = parseInt(lp[idx].trucK_AADT_FRCT2_BD);\r\n stateParams.capacityCurrent = lp[idx].msvCurrent;\r\n document.getElementById(\"ap-capacityCurrent\").value = parseInt(lp[idx].msvCurrent);\r\n // stateParams.capacityForecast = lp[idx].msV_FRC2_BD;\r\n // document.getElementById(\"ap-capacityForecast\").value = parseInt(lp[idx].msV_FRC2_BD);\r\n stateParams.capacityForecast = lp[idx].msvCalculated;\r\n document.getElementById(\"ap-capacityForecast\").value = parseInt(lp[idx].msvCalculated);\r\n stateParams.speedCurrent = lp[idx].avgerageMaxSpeed;\r\n document.getElementById(\"ap-speedCurrent\").value = parseInt(lp[idx].avgerageMaxSpeed);\r\n stateParams.lanesCurrent = lp[idx].lanesCurrent;\r\n document.getElementById(\"ap-lanesCurrent\").value = parseInt(lp[idx].lanesCurrent);\r\n stateParams.lanesForecast = lp[idx].finalLanes;\r\n document.getElementById(\"ap-lanesForecast\").value = parseInt(lp[idx].finalLanes);\r\n //document.getElementById(\"ap-managedLanesForecast\").value = lp[idx].managedLanesForecast;\r\n stateParams.fatalitiesCurrent = lp[idx].fatalityAverage;\r\n document.getElementById(\"ap-fatalitiesCurrent\").value = UtilFunctions.trimDecimalPlaces(lp[idx].fatalityAverage, 1);\r\n stateParams.injuriesCurrent = lp[idx].injuryAverage;\r\n document.getElementById(\"ap-injuriesCurrent\").value = UtilFunctions.trimDecimalPlaces(lp[idx].injuryAverage, 1);\r\n break;\r\n }\r\n }\r\n let np = this.newProjects;\r\n for (let idx = 0, len = np.length; idx < len; idx++) {\r\n if (np[idx].segment === segment) {\r\n stateParams.error = \"A new project with this Id already exists.\";\r\n break;\r\n }\r\n }\r\n this.setState(stateParams);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

Add New Project

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

Project Description

\r\n {this.state.isCandidate ?
Project Id is from an existing project
:
Project Id is not in the project list
}\r\n
Project Id
\r\n
Project Name
\r\n
Mode
\r\n
Improvement Type\r\n \r\n
\r\n
Project Length (Miles)
\r\n
District\r\n \r\n
\r\n
Project Description
\r\n
\r\n\r\n
\r\n

Project Capital Cost

\r\n
Engineering
\r\n
Environmental
\r\n
PDE
\r\n
Right of Way
\r\n
Construction
\r\n
Total D&E
\r\n
Start Year
\r\n
Duration (Years)
\r\n
Total Cost
\r\n
\r\n
\r\n\r\n
\r\n

Current vs Forecast

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Current ConditionsBuild ForecastNo-Build Forecast
Total AADT
Truck AADT
Daily Capacity
Free Flow Speed
Lanes
Managed Lanes
Annual Fatalities
Annual Injuries
\r\n
\r\n\r\n {this.state.error === \"\" ? null : (\r\n
\r\n Error: {this.state.error}\r\n
\r\n )}\r\n\r\n
\r\n \r\n
\r\n Cancel\r\n {this.state.error === \"\" ? (Add project to scenario) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default AddProject;","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\n\r\nimport { deliverNewScenario, deliverUpdateScenario, setSelectedScenario } from \"../actions/scenarios\";\r\n\r\nclass SaveScenario extends Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"[SaveScenario]:\");\r\n\r\n this.state = {\r\n error: \"\",\r\n showSavingSplash: false,\r\n scenarioName: props.selectedScenario.scenarioName,\r\n scenarioDesc: props.selectedScenario.description,\r\n newProjects: this.props.newProjects,\r\n modelParametersAreDefault: this.props.modelParametersAreDefault,\r\n modelParameters: this.props.modelParameters,\r\n scenarioProjects: this.props.scenarioProjects,\r\n userName: this.props.userInfo.name,\r\n saveStatus: this.props.saveStatus,\r\n saveStatusMessage: this.props.saveStatusMessage,\r\n savedScenarioResults: this.props.savedScenarioResults\r\n }\r\n\r\n this.modalId = props.modalId;\r\n this.existingScenarioName = props.selectedScenario.scenarioName;\r\n this.selectedScenario = props.selectedScenario;\r\n this.saveScenarioReturn = props.saveScenarioReturn;\r\n this.isNewScenario = (this.existingScenarioName === \"\");\r\n this.isOwner = true;\r\n if (this.existingScenarioName !== \"\" && this.selectedScenario.createdBy !== this.props.userInfo.name) this.isOwner=false;\r\n\r\n let showModal = this.showModal;\r\n setTimeout(function () {\r\n showModal();\r\n }, 100)\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n console.log(\"SaveScenario getDerivedStateFromProps saveStatus = \" + nextProps.saveStatus);\r\n if (nextProps.saveStatus !== prevState.saveStatus) {\r\n return {\r\n saveStatus: nextProps.saveStatus,\r\n saveStatusMessage: nextProps.saveStatusMessage\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.saveStatus !== this.props.saveStatus) {\r\n if (this.props.saveStatus === \"ERROR\") {\r\n console.log(\"SaveScenario componentDidUpdate=\" + this.props.saveStatus);\r\n this.setState({ error: this.props.saveStatusMessage });\r\n } else if (this.props.saveStatus === \"SAVED\") {\r\n console.log(\"SaveScenario componentDidUpdate=\" + this.props.saveStatus);\r\n this.props.setSelectedScenario(this.props.savedScenarioResults);\r\n this.saveScenarioCompleted();\r\n }\r\n }\r\n }\r\n\r\n showModal = () => {\r\n classFunctions.addClass(document.getElementById(this.modalId), \"show\");\r\n }\r\n\r\n cancelSaveScenario = () => {\r\n this.saveScenarioReturn({\r\n type: \"cancel\"\r\n });\r\n }\r\n\r\n saveScenario = (saveAs) => {\r\n console.log(\"saveScenario...\");\r\n if (this.state.scenarioName === \"\") {\r\n this.setState({ error: \"Scenario name cannot be blank.\" });\r\n return;\r\n } else if (this.state.scenarioDesc === \"\") {\r\n this.setState({ error: \"Scenario description cannot be blank.\" });\r\n return;\r\n }\r\n if (saveAs && this.state.scenarioName === this.existingScenarioName) {\r\n this.setState({ error: \"Saving an existing scenario as a new scenario requires a different scenario name from that of the existing scenario.\" });\r\n return;\r\n }\r\n\r\n this.setState({ showSavingSplash: true });\r\n\r\n let segments = [];\r\n let numGp = 0;\r\n let numMl = 0;\r\n let totalCost = 0;\r\n let ssp = this.state.scenarioProjects;\r\n for (let idx = 0, len = ssp.length; idx < len; idx++) {\r\n totalCost += ssp[idx].totalCost;\r\n if (ssp[idx].improvement === \"MGLANE\") {\r\n numMl++;\r\n } else {\r\n numGp++;\r\n }\r\n segments.push(ssp[idx].segment);\r\n }\r\n let mp = this.props.modelParametersAreDefault ? {} : this.props.modelParameters;\r\n let payload = {\r\n scenarioName: this.state.scenarioName,\r\n description: this.state.scenarioDesc,\r\n gpProjects: numGp,\r\n mlProjects: numMl,\r\n totalCost: totalCost,\r\n createdBy: this.props.userInfo.name,\r\n segments: segments.toString(),\r\n newProjects: this.state.newProjects,\r\n modelParameter: mp\r\n };\r\n\r\n if (saveAs || this.isNewScenario) {\r\n payload.modelParameterID = 0;\r\n this.props.deliverNewScenario(payload);\r\n } else {\r\n payload.id = this.selectedScenario.id;\r\n payload.modelParameterID = this.props.modelParameters.id;\r\n this.props.deliverUpdateScenario(payload);\r\n }\r\n }\r\n\r\n saveScenarioCompleted = () => {\r\n this.saveScenarioReturn({\r\n type: \"saved\",\r\n scenario: this.props.savedScenarioResults\r\n });\r\n }\r\n\r\n handleNameChange = (event) => {\r\n this.setState({ scenarioName: event.target.value });\r\n }\r\n\r\n handleDescChange = (event) => {\r\n this.setState({ scenarioDesc: event.target.value });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

Save Scenario{this.isNewScenario ? null : ((Existing scenario: {this.existingScenarioName}))}

\r\n\r\n
\r\n
Scenario name:
\r\n \r\n
\r\n
\r\n
Scenario description:
\r\n \r\n
\r\n\r\n {!this.isNewScenario && !this.isOwner ? (
Note: The existing scenario was created by another user.
If you change the name you can save it as your own scenario.
) : null}\r\n\r\n {this.state.showSavingSplash ? (\r\n
{this.isNewScenario ? (\"Saving\") : (\"Updating\")} scenario...
\r\n ) : (\r\n
\r\n Cancel\r\n {this.isNewScenario ? (\r\n Save Scenario\r\n ) : (\r\n Save as New Scenario\r\n )}\r\n {this.isOwner && !this.isNewScenario ? (Update Existing Scenario) : null}\r\n
\r\n )}\r\n
\r\n\r\n {this.state.error !== \"\" ? (\r\n
\r\n Error: {this.state.error}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n userInfo: state.scenario.projects.userInfo,\r\n newProjects: state.scenario.projects.newProjects ? state.scenario.projects.newProjects : [],\r\n scenarioProjects: state.scenario.projects.scenarioProjects ? state.scenario.projects.scenarioProjects : [],\r\n selectedScenario: state.scenario.projects.selectedScenario ? state.scenario.projects.selectedScenario : { scenarioName: \"\", description: \"\" },\r\n modelParametersAreDefault: state.scenario.projects.modelParametersAreDefault,\r\n modelParameters: state.scenario.projects.modelParameters ? state.scenario.projects.modelParameters : {},\r\n saveStatus: state.scenario.projects.saveStatus ? state.scenario.projects.saveStatus : null,\r\n saveStatusMessage: state.scenario.projects.saveStatusMessage ? state.scenario.projects.saveStatusMessage : \"\",\r\n savedScenarioResults: state.scenario.projects.savedScenarioResults ? state.scenario.projects.savedScenarioResults : null\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n deliverNewScenario: (payload) => dispatch(deliverNewScenario(payload)),\r\n deliverUpdateScenario: (payload) => dispatch(deliverUpdateScenario(payload)),\r\n setSelectedScenario: (payload) => dispatch(setSelectedScenario(payload)),\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SaveScenario);","import React, { Component } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\nimport * as UtilFunctions from \"../js/utils\"\r\n\r\nimport { MODEL_PARAMETERS_INFO } from \"../constants/defaults\";\r\n\r\nimport ProjectTable from \"../components/ProjectTable\";\r\nimport AddProject from \"../components/AddProject\";\r\nimport SaveScenario from \"../components/SaveScenario\";\r\n\r\nimport { fetchModelParameters, setModelParameters, setModelParametersInfo } from \"../actions/parameters\";\r\nimport { fetchProjects, setScenarioProjects, setSelectedProjects, setNewProjects } from \"../actions/projects\";\r\nimport { fetchScenarioSegments, deliverNewScenario, setSelectedScenario, setReloadScenarios } from \"../actions/scenarios\";\r\n\r\nimport imgDrop from \"../assets/drop.png\";\r\nimport imgCheck from \"../assets/check.png\";\r\n\r\nlet ScenarioToShow = null;\r\nlet totalScenarioSelectedProjects = 0;\r\nlet percentScenarioSelectedProjects = 0;\r\nlet unselectSegment = -1;\r\nlet scenarioCost = 0;\r\n\r\nclass Projects extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n scenarioLastSaved: \"\",\r\n nextNewSegment: 90010,\r\n goToOutputPage: false,\r\n goToScenariosPage: false,\r\n showAddProjectModal: false,\r\n showSaveScenarioModal: false,\r\n selectedScenario: this.props.selectedScenario,\r\n totalCost: this.props.totalCost.toString(),\r\n totalProjectCount: this.props.totalProjectCount,\r\n scenarioProjectCount: 0,\r\n newProjects: this.props.newProjects,\r\n selectedProjects: this.props.selectedProjects,\r\n scenarioProjects: this.props.scenarioProjects\r\n }\r\n console.log(\"[Projects]\");\r\n\r\n totalScenarioSelectedProjects = 0;\r\n percentScenarioSelectedProjects = 0;\r\n }\r\n\r\n saveScenarioModalId = \"modal-save-scenario-window\";\r\n\r\n componentDidMount() {\r\n console.log(\"Projects componentDidMount\");\r\n if (!this.props.modelParameters.hasOwnProperty(\"id\")) this.props.fetchModelParameters();\r\n if (this.props.loadedProjects.length === 0) {\r\n this.props.fetchProjects();\r\n } else {\r\n if (this.props.selectedScenario.scenarioName !== \"\") this.props.fetchScenarioSegments(this.props.selectedScenario.id);\r\n }\r\n\r\n if ((this.props.selectedProjects.length > 0 &&\r\n this.props.scenarioProjects.length === this.props.selectedProjects.length) ||\r\n this.props.newProjects.length > 0) {\r\n console.log(\"**Running addSelectedToScenaro from Did MOUNT\");\r\n this.addSelectedToScenaro(true);\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n let haveUpdate = false, stateUpdate = {};\r\n if (nextProps.selectedProjects !== prevState.selectedProjects) {\r\n stateUpdate.selectedProjects = nextProps.selectedProjects;\r\n haveUpdate = true;\r\n console.log(\"-->Projects getDerivedStateFromProps haveUpdate = selectedProjects\");\r\n }\r\n if (nextProps.totalProjectCount !== prevState.totalProjectCount) {\r\n stateUpdate.totalProjectCount = nextProps.totalProjectCount;\r\n stateUpdate.totalCost = nextProps.totalCost.toString();\r\n haveUpdate = true;\r\n console.log(\"-->Projects getDerivedStateFromProps haveUpdate = totalProjectCount\");\r\n }\r\n if (nextProps.selectedScenario !== prevState.selectedScenario) {\r\n stateUpdate.selectedScenario = nextProps.selectedScenario;\r\n haveUpdate = true;\r\n console.log(\"-->Projects getDerivedStateFromProps haveUpdate = selectedScenario\");\r\n }\r\n if (nextProps.scenarioSegmentStatus !== prevState.scenarioSegmentStatus) {\r\n if (nextProps.scenarioSegmentStatus === \"LOADED\") {\r\n stateUpdate.scenarioSegmentStatus = nextProps.scenarioSegmentStatus;\r\n haveUpdate = true;\r\n console.log(\"-->Projects getDerivedStateFromProps haveUpdate = scenarioSegmentStatus\");\r\n }\r\n }\r\n // console.log(\"Projects getDerivedStateFromProps haveUpdate = \" + haveUpdate);\r\n if (haveUpdate) {\r\n return stateUpdate;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n console.log(\"Projects componentDidUpdate\");\r\n if (prevProps.selectedProjects !== this.props.selectedProjects ||\r\n prevProps.newProjects.length !== this.props.newProjects.length){\r\n console.log(\"**Running addSelectedToScenaro from Did UPDATE\");\r\n if (prevProps.loadedProjects.length > 0) this.addSelectedToScenaro(true);\r\n }\r\n if (prevProps.loadedProjects.length !== this.props.loadedProjects.length) {\r\n console.log(\"+++Loaded projects length has changed\");\r\n // If a scenario was selected add the selected scenario to the scenario projects\r\n if (this.state.selectedProjects.length > 0) {\r\n totalScenarioSelectedProjects = this.state.selectedProjects.length;\r\n percentScenarioSelectedProjects = (totalScenarioSelectedProjects / this.state.totalProjectCount) * 100;\r\n this.addSelectedToScenaro(true);\r\n //this.setState({ scenarioLastSaved: \"now\" });\r\n }\r\n if (this.props.selectedScenario.scenarioName !== \"\") this.props.fetchScenarioSegments(this.props.selectedScenario.id);\r\n }\r\n }\r\n\r\n goToScenariosPage = () => {\r\n this.setState({ goToScenariosPage: true })\r\n }\r\n\r\n goToOutputPage = () => {\r\n this.setState({ goToOutputPage: true })\r\n }\r\n\r\n addNewProject = () => {\r\n this.setState({ showAddProjectModal: true });\r\n }\r\n\r\n resetProjects = () => {\r\n\r\n this.props.setSelectedScenario(null);\r\n this.props.setScenarioProjects([]);\r\n this.props.setSelectedProjects([]);\r\n this.props.setNewProjects([]);\r\n\r\n ScenarioToShow = null;\r\n totalScenarioSelectedProjects = 0;\r\n percentScenarioSelectedProjects = 0;\r\n\r\n this.setState({\r\n selectedScenario: { scenarioName: \"\", description: \"\" },\r\n selectedProjects: [],\r\n scenarioProjects: [],\r\n scenarioProjectCount: 0,\r\n newProjects: []\r\n });\r\n }\r\n\r\n addProjectReturn = (newProject) => {\r\n this.hideModal(\"modal-add-project-window\");\r\n\r\n if (!newProject) {\r\n console.log(\"addProjectReturn: canceled\");\r\n return;\r\n }\r\n console.log(\"addProjectReturn name: \" + newProject.localName);\r\n let np = this.state.newProjects;\r\n np.push(newProject);\r\n let scenarioProjectCount = np.length + this.state.selectedProjects.length;\r\n this.setState({ scenarioProjectCount: scenarioProjectCount, newProjects: np, nextNewSegment: newProject.segment + 10 });\r\n this.props.setNewProjects(np);\r\n ScenarioToShow = this.scenarioData(np, null);\r\n }\r\n\r\n saveScenario = () => {\r\n this.setState({ showSaveScenarioModal: true });\r\n }\r\n\r\n saveScenarioReturn = (results) => {\r\n this.hideModal(this.saveScenarioModalId);\r\n if (results.type === \"cancel\") return;\r\n\r\n this.props.setReloadScenarios(true);\r\n }\r\n\r\n hideAddProjectModal = () => {\r\n this.hideModal(\"modal-add-project-window\");\r\n }\r\n\r\n hideSaveScenarioModal = () => {\r\n this.hideModal(this.saveScenarioModalId);\r\n }\r\n hideModal = (id) => {\r\n // Do a nice slide removal of the modal window, then remove it.\r\n classFunctions.removeClass(document.getElementById(id), \"show\");\r\n let removeModal = this.removeModal;\r\n setTimeout(function () {\r\n removeModal();\r\n }, 2000)\r\n }\r\n removeModal = () => {\r\n this.setState({ showAddProjectModal: false, showSaveScenarioModal: false });\r\n }\r\n\r\n updateSelectedProjects = (projList) => {\r\n console.log(\"updateSelectedProjects selected= \" + projList.length);\r\n unselectSegment = -1;\r\n this.setState({ selectedProjects: projList });\r\n }\r\n\r\n addSelectedToScenaro = (useProps) => {\r\n console.log(\"Projects addSelectedToScenaro\");\r\n\r\n let stateObj = {};\r\n let sp = [];\r\n let ssp = useProps ? this.props.selectedProjects : this.state.selectedProjects;\r\n for (let idx = 0, len = ssp.length; idx < len; idx++) {\r\n let prj;\r\n if (ssp[idx].localName === \"\") {\r\n prj = this.getProjectInfo(ssp[idx].segment);\r\n } else {\r\n prj = ssp[idx];\r\n }\r\n sp.push(prj);\r\n }\r\n let np\r\n if (useProps) {\r\n np = this.props.newProjects;\r\n stateObj.newProjects = np;\r\n } else {\r\n if (this.props.newProjects.length > this.state.newProjects.length) {\r\n np = this.props.newProjects;\r\n stateObj.newProjects = np;\r\n } else {\r\n np = this.state.newProjects;\r\n }\r\n }\r\n let scenarioProjectCount = sp.length + np.length;\r\n if (scenarioProjectCount > 0) {\r\n ScenarioToShow = this.scenarioData(np, sp);\r\n //+++++++stateObj.scenarioLastSaved = \"Scenario has not been saved\";\r\n }\r\n totalScenarioSelectedProjects = sp.length;\r\n percentScenarioSelectedProjects = (totalScenarioSelectedProjects / this.state.totalProjectCount) * 100;\r\n \r\n stateObj.scenarioProjectCount = scenarioProjectCount;\r\n stateObj.scenarioProjects = sp;\r\n if (!useProps) {\r\n stateObj.selectedScenario = { scenarioName: \"\", description: \"\" };\r\n this.props.setSelectedScenario(null);\r\n }\r\n this.props.setScenarioProjects(sp);\r\n this.setState(stateObj);\r\n }\r\n getProjectInfo = (segment) => {\r\n let projects = this.props.loadedProjects;\r\n for (let idx = 0, len = projects.length; idx < len; idx++) {\r\n if (projects[idx].segment === segment) {\r\n let prj = {\r\n segment: projects[idx].segment,\r\n localName: projects[idx].localName,\r\n improvement: projects[idx].improvement,\r\n district: projects[idx].district,\r\n totalCost: projects[idx].totalCost\r\n }\r\n return prj;\r\n }\r\n }\r\n return {\r\n segment: segment,\r\n localName: \"Retrieving....\",\r\n improvement: \"\",\r\n district: \"\",\r\n totalCost: \"\"\r\n };\r\n }\r\n\r\n removeScenarioProject = (segment, isNew) => {\r\n console.log(\"removeScenarioProject: \" + segment + \", is new: \" + isNew);\r\n let stateObj = {};\r\n let np = [];\r\n let sp = [];\r\n let haveNewProjectsChange = false;\r\n let haveSelectedProjectsChange = false;\r\n if (isNew) {\r\n if (this.state.newProjects.length > 1) {\r\n let snp = this.state.newProjects;\r\n for (let idx = 0, len = snp.length; idx < len; idx++) {\r\n if (snp[idx].segment === segment) continue;\r\n let prj = snp[idx];\r\n np.push(prj);\r\n }\r\n }\r\n stateObj.newProjects = np;\r\n haveNewProjectsChange = true;\r\n\r\n unselectSegment = -1;\r\n } else {\r\n np = this.state.newProjects;\r\n }\r\n\r\n if (!isNew) {\r\n if (this.state.selectedProjects.length > 1) {\r\n let ssp = this.state.selectedProjects;\r\n for (let idx = 0, len = ssp.length; idx < len; idx++) {\r\n if (ssp[idx].segment === segment) continue;\r\n let prj = ssp[idx];\r\n sp.push(prj);\r\n }\r\n totalScenarioSelectedProjects = sp.length;\r\n percentScenarioSelectedProjects = (totalScenarioSelectedProjects / this.state.totalProjectCount) * 100;\r\n }\r\n stateObj.selectedProjects = sp;\r\n stateObj.scenarioProjects = sp;\r\n haveSelectedProjectsChange = true;\r\n\r\n unselectSegment = segment;\r\n } else {\r\n sp = this.state.selectedProjects;\r\n }\r\n\r\n let scenarioProjectCount = np.length + sp.length;\r\n stateObj.scenarioProjectCount = scenarioProjectCount;\r\n\r\n if (scenarioProjectCount > 0) {\r\n ScenarioToShow = this.scenarioData(np, sp);\r\n } else {\r\n ScenarioToShow = null;\r\n }\r\n\r\n this.setState(stateObj);\r\n if (haveNewProjectsChange) this.props.setNewProjects(np);\r\n if (haveSelectedProjectsChange) this.props.setScenarioProjects(sp);\r\n }\r\n removeScenarioProjects = () => {\r\n console.log(\"removeScenarioProjects\");\r\n ScenarioToShow = null;\r\n totalScenarioSelectedProjects = 0;\r\n percentScenarioSelectedProjects = 0;\r\n this.setState({ scenarioProjectCount: 0, scenarioProjects: [] });\r\n this.props.setScenarioProjects([]);\r\n }\r\n\r\n scenarioData(newPrjs, selPrjs) {\r\n let np = newPrjs ? newPrjs : this.state.newProjects;\r\n let sp = selPrjs ? selPrjs : this.state.selectedProjects;\r\n let items = [];\r\n scenarioCost = 0;\r\n for (let idx = 0, len = np.length; idx < len; idx++) {\r\n scenarioCost += np[idx].totalCost;\r\n items.push(this.createScenarioItem(np[idx], true));\r\n }\r\n for (let idx = 0, len = sp.length; idx < len; idx++) {\r\n scenarioCost += sp[idx].totalCost;\r\n items.push(this.createScenarioItem(sp[idx], false));\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n {items}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n createScenarioItem(item, isNew) {\r\n let key = isNew ? \"CA\" + item.segment : \"AD\" + item.segment;\r\n return (\r\n
\r\n
\r\n

{isNew ? **New** : null}{item.segment} :: {item.localName}

\r\n
\r\n
\r\n District {item.district}\r\n {item.improvement}\r\n Total Cost: {UtilFunctions.formatNumber(item.totalCost, 0, true)}\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n if (this.state.goToOutputPage) {\r\n return \r\n }\r\n if (this.state.goToScenariosPage === true) {\r\n return \r\n }\r\n return (\r\n
\r\n
\r\n \r\n {this.state.scenarioProjectCount < 1 ? null : (\r\n
\r\n \r\n \r\n Save Scenario\r\n \r\n \r\n \r\n Run Analysis\r\n \r\n
\r\n )}\r\n

{this.state.selectedScenario.scenarioName === \"\" ? (\"New Scenario\") : (\"Scenario: \" + this.state.selectedScenario.scenarioName)}

\r\n\r\n {this.state.scenarioLastSaved}\r\n\r\n {this.state.scenarioProjectCount < 1 ? null : (\r\n
\r\n \r\n \r\n Reset Projects\r\n \r\n
\r\n )}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Total Cost: {UtilFunctions.formatNumber(this.props.totalCost, 0, true)}

\r\n {this.state.scenarioProjectCount < 1 ? null : (\r\n

Scenario Cost: {UtilFunctions.formatNumber(scenarioCost, 0, true)}

\r\n )}\r\n {this.state.scenarioProjectCount < 1 ? null : (\r\n

Remove all projects

\r\n )}\r\n
\r\n\r\n {this.state.scenarioProjectCount > 0 ? (ScenarioToShow) : (\r\n
\r\n
\r\n \"\"\r\n

Add projects to your scenario

\r\n

Click the check boxes in the project list below to select projects.
Click the \"Add selected to scenario\" button to add the selected projects to your scenario.

\r\n
\r\n
\r\n )}\r\n\r\n
\r\n

Total Projects: {this.state.totalProjectCount}

\r\n
\r\n

\r\n {this.state.newProjects.length === 0 ? null : (\r\n {this.state.newProjects.length} new project{this.props.newProjects.length === 1 ? \"\" : \"s\"} in scenario\r\n )}\r\n {totalScenarioSelectedProjects} selected project{totalScenarioSelectedProjects === 1 ? \"\" : \"s\"} in scenario::\r\n {UtilFunctions.formatNumber(percentScenarioSelectedProjects, 1, false)}% of total projects\r\n

\r\n
\r\n
\r\n
\r\n\r\n \r\n \"\"\r\n Add selected to scenario\r\n \r\n Modified value\r\n \r\n +Add a new project\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n {this.state.showAddProjectModal ? (\r\n
\r\n ×\r\n \r\n
\r\n ) : null}\r\n\r\n {this.state.showSaveScenarioModal ? (\r\n
\r\n ×\r\n \r\n
\r\n ) : null}\r\n\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n selectedScenario: state.scenario.projects.selectedScenario ? state.scenario.projects.selectedScenario : { scenarioName: \"\", description: \"\" },\r\n loadedProjects: state.scenario.projects.loadedProjects ? state.scenario.projects.loadedProjects : [],\r\n selectedProjects: state.scenario.projects.selectedProjects ? state.scenario.projects.selectedProjects : [],\r\n scenarioSegmentStatus: state.scenario.projects.scenarioSegmentStatus ? state.scenario.projects.scenarioSegmentStatus : null,\r\n scenarioSegmentStatusMessage: state.scenario.projects.scenarioSegmentStatusMessage ? state.scenario.projects.scenarioSegmentStatusMessage : \"\",\r\n scenarioProjects: state.scenario.projects.scenarioProjects ? state.scenario.projects.scenarioProjects : [],\r\n scenarioProjectCount: state.scenario.projects.scenarioProjectCount ? state.scenario.projects.scenarioProjectCount : 0,\r\n newProjects: state.scenario.projects.newProjects ? state.scenario.projects.newProjects : [],\r\n totalCost: state.scenario.projects.totalCost ? state.scenario.projects.totalCost : 0,\r\n totalProjectCount: state.scenario.projects.totalProjectCount ? state.scenario.projects.totalProjectCount : 0,\r\n modelParametersInfo: state.scenario.projects.modelParametersInfo ? state.scenario.projects.modelParametersInfo : MODEL_PARAMETERS_INFO,\r\n modelParameters: state.scenario.projects.modelParameters ? state.scenario.projects.modelParameters : {}\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n fetchModelParameters: () => dispatch(fetchModelParameters()),\r\n fetchProjects: () => dispatch(fetchProjects()),\r\n fetchScenarioSegments: (payload) => dispatch(fetchScenarioSegments(payload)),\r\n deliverNewScenario: (payload) => dispatch(deliverNewScenario(payload)),\r\n setModelParameters: (payload) => dispatch(setModelParameters(payload)),\r\n setModelParametersInfo: (payload) => dispatch(setModelParametersInfo(payload)),\r\n setSelectedProjects: (payload) => dispatch(setSelectedProjects(payload)),\r\n setScenarioProjects: (payload) => dispatch(setScenarioProjects(payload)),\r\n setSelectedScenario: (payload) => dispatch(setSelectedScenario(payload)),\r\n setReloadScenarios: (payload) => dispatch(setReloadScenarios(payload)),\r\n setNewProjects: (payload) => dispatch(setNewProjects(payload))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Projects);\r\n","import React, { useState } from 'react';\r\nimport { connect } from \"react-redux\";\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\n\r\nimport * as UtilFunctions from \"../js/utils\"\r\n\r\nfunction desc(a, b, orderBy) {\r\n if (b[orderBy] < a[orderBy]) {\r\n return -1;\r\n }\r\n if (b[orderBy] > a[orderBy]) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\nfunction stableSort(array, cmp) {\r\n const stabilizedThis = array.map((el, index) => [el, index]);\r\n stabilizedThis.sort((a, b) => {\r\n const order = cmp(a[0], b[0]);\r\n if (order !== 0) return order;\r\n return a[1] - b[1];\r\n });\r\n return stabilizedThis.map(el => el[0]);\r\n}\r\n\r\nfunction getSorting(order, orderBy) {\r\n return order === 'desc' ? (a, b) => desc(a, b, orderBy) : (a, b) => -desc(a, b, orderBy);\r\n}\r\n\r\nlet rows = [];\r\nlet notSelected = { projectID: -1, categoryCode: \"\" };\r\n\r\nconst headRows = [\r\n { id: 'categoryCode', numeric: false, label: 'Category' },\r\n { id: 'projectID', numeric: true, label: 'Project ID' },\r\n { id: 'projectDescription', numeric: false, label: 'Project Description' },\r\n { id: 'improvementType', numeric: false, label: 'Improvement Type' },\r\n { id: 'effectiveDistance', numeric: true, label: 'Project Length (Miles)' },\r\n { id: 'district', numeric: true, label: 'District' },\r\n { id: 'firstSpendingYear', numeric: true, label: 'First Spending Year' },\r\n\r\n { id: 'totalPreliminaryEngineering', numeric: true, label: 'D&E' },\r\n { id: 'totalRightOfWay', numeric: true, label: 'RW' },\r\n { id: 'totalConstruction', numeric: true, label: 'CON' },\r\n { id: 'totalCost', numeric: true, label: 'Total' },\r\n\r\n { id: 'discountedTotalCost', numeric: true, label: '** Discounted Total Costs' },\r\n { id: 'discountedBenefits', numeric: true, label: 'Discounted Total Benefits' },\r\n { id: 'economicNetPresentValue', numeric: true, label: 'Economic Net Present Value' },\r\n { id: 'benefitCostRatio', numeric: true, label: 'B/C Ratio' },\r\n { id: 'discountedTravelTimeSavings', numeric: true, label: 'Discounted Travel Time Savings' },\r\n { id: 'discountedVehicleOperatingCostSavings', numeric: true, label: 'Discounted Vehicle Operating Cost Savings' },\r\n { id: 'discountedSafetySavings', numeric: true, label: 'Discounted Safety Benefits' },\r\n { id: 'discountedEmissionCostSavings', numeric: true, label: 'Discounted Emission Cost Savings' },\r\n { id: 'discountedFreightLogisticsBenefits', numeric: true, label: 'Discounted Freight Logistics Benefits' },\r\n\r\n { id: 'financialNetPresentValue', numeric: true, label: 'Financial Net Present Value' },\r\n { id: 'totalAutoRevenue', numeric: true, label: 'Revenue Auto' },\r\n { id: 'totalTruckRevenue', numeric: true, label: 'Revenue Truck' },\r\n { id: 'financialIRR', numeric: true, label: 'Financial IRR (%)' },\r\n\r\n { id: 'steiaOutputImpact', numeric: true, label: 'Output' },\r\n { id: 'steiaEarningsImpact', numeric: true, label: 'Earnings' },\r\n { id: 'steiaValueAddedImpact', numeric: true, label: 'Value Added' },\r\n { id: 'steiaEmploymentImpact', numeric: true, label: 'Employment (Job-Years)' },\r\n\r\n { id: 'lteiaOutputImpact', numeric: true, label: 'Output' },\r\n { id: 'lteiaEarningsImpact', numeric: true, label: 'Earnings' },\r\n { id: 'lteiaValueAddedImpact', numeric: true, label: 'Value Added' },\r\n { id: 'lteiaEmploymentImpact', numeric: true, label: 'Employment (Job-Years)' }\r\n];\r\n\r\nconst header0Styles = makeStyles(theme => ({\r\n root: {\r\n padding: \"5px\"\r\n },\r\n head: {\r\n color: \"#333\",\r\n backgroundColor: \"#ccc\",\r\n padding: \"5px 10px\",\r\n lineHeight: \"1rem\",\r\n textAlign: \"center\",\r\n border: \"1px solid #999\"\r\n }\r\n}));\r\nfunction AnalysisTableHead0WithProps(props) {\r\n const classes = header0Styles();\r\n return (\r\n \r\n \r\n Project Details\r\n Project Capital Cost Spending, ${props.dataInfo.dataYear} (000's)\r\n Analysis Results, Discounted ${props.dataInfo.dataYear}\r\n Financial Results (Managed Lane Projects), $YOE\r\n Short-Term EIA Results, ${props.dataInfo.dataYear}\r\n Long-Term EIA Results, {props.dataInfo.dataYear} $000/Year\r\n \r\n \r\n );\r\n}\r\nconst mapStateToProps = state => ({ dataInfo: state.scenario.projects.dataInfo });\r\nconst AnalysisTableHead0 = connect(mapStateToProps)(AnalysisTableHead0WithProps);\r\n\r\nconst header1Styles = makeStyles(theme => ({\r\n root: {\r\n padding: \"5px\"\r\n },\r\n head: {\r\n color: \"#333\",\r\n backgroundColor: \"#eee\",\r\n padding: \"5px 10px\",\r\n border: \"1px solid #999\"\r\n },\r\n paddingCheckbox: {\r\n backgroundColor: \"#eee\",\r\n border: \"1px solid #999\"\r\n }\r\n}));\r\nfunction AnalysisTableHead1(props) {\r\n const { order, orderBy, onRequestSort } = props;\r\n const createSortHandler = property => event => {\r\n onRequestSort(event, property);\r\n };\r\n const classes = header1Styles();\r\n\r\n return (\r\n \r\n \r\n \r\n {headRows.map(row => (\r\n \r\n \r\n {row.label}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nAnalysisTableHead1.propTypes = {\r\n onRequestSort: PropTypes.func.isRequired,\r\n order: PropTypes.string.isRequired,\r\n orderBy: PropTypes.string.isRequired,\r\n rowCount: PropTypes.number.isRequired,\r\n};\r\n\r\nconst tableStyles = makeStyles(theme => ({\r\n container: {\r\n width: \"100%\",\r\n margin: \"0\"\r\n },\r\n paper: {\r\n width: \"100%\"\r\n },\r\n table: {\r\n minWidth: 4000,\r\n },\r\n tableWrapper: {\r\n overflowX: \"auto\"\r\n },\r\n root: {\r\n padding: \"5px 10px\",\r\n borderLeft: \"1px solid #e0e0e0\"\r\n },\r\n error: {\r\n color: \"#c00\"\r\n }\r\n}));\r\n\r\nfunction AnalysisTable(props) {\r\n const [order, setOrder] = useState('asc');\r\n const [orderBy, setOrderBy] = useState('projectID');\r\n const [selected, setSelected] = useState(notSelected);\r\n const [page, setPage] = useState(0);\r\n const [dense, setDense] = useState(false);\r\n const [rowsPerPage, setRowsPerPage] = useState(5);\r\n\r\n const classes = tableStyles();\r\n\r\n let resultItemChecked = props.resultItemChecked;\r\n\r\n rows = props.resultsData;\r\n\r\n function handleRequestSort(event, property) {\r\n const isDesc = orderBy === property && order === 'desc';\r\n setOrder(isDesc ? 'asc' : 'desc');\r\n setOrderBy(property);\r\n }\r\n\r\n function handleClick(event, row) {\r\n let selItem = row.projectID === selected.projectID && row.categoryCode === selected.categoryCode ? notSelected : row;\r\n setSelected(selItem);\r\n resultItemChecked(selItem);\r\n }\r\n\r\n function handleChangePage(event, newPage) {\r\n setPage(newPage);\r\n }\r\n\r\n function handleChangeRowsPerPage(event) {\r\n setRowsPerPage(+event.target.value);\r\n }\r\n\r\n function handleChangeDense(event) {\r\n setDense(event.target.checked);\r\n }\r\n\r\n const emptyRows = rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage);\r\n\r\n if (rows.length === 0) {\r\n return (
Retrieving results data...
);\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {stableSort(rows, getSorting(order, orderBy))\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map(row => {\r\n const isItemSelected = (row.projectID === selected.projectID && row.categoryCode === selected.categoryCode);\r\n return (\r\n handleClick(event, row)}\r\n role=\"checkbox\"\r\n aria-checked={isItemSelected}\r\n tabIndex={-1}\r\n key={row.categoryCode + row.projectID}\r\n selected={isItemSelected}\r\n >\r\n \r\n \r\n \r\n {row.categoryCode}\r\n {row.projectID}\r\n {row.projectDescription}\r\n {row.improvementType}\r\n {UtilFunctions.formatNumber(row.effectiveDistance, 2, false, false)}\r\n {row.district}\r\n {row.firstSpendingYear}\r\n\r\n {UtilFunctions.formatNumber(row.totalDesignAndEngineering, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.totalRightOfWay, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.totalConstruction, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.totalCost, 0, true, true)}\r\n\r\n {UtilFunctions.formatNumber(row.discountedTotalCost, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.discountedBenefits, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.economicNetPresentValue, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.benefitCostRatio, 2, false, false)}\r\n {UtilFunctions.formatNumber(row.discountedTravelTimeSavings, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.discountedVehicleOperatingCostSavings, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.discountedSafetySavings, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.discountedEmissionCostSavings, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.discountedFreightLogisticsBenefits, 0, true, true)}\r\n\r\n {UtilFunctions.formatNumber(row.financialNetPresentValue, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.totalAutoRevenue, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.totalTruckRevenue, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.financialIRR * 100, 1, false, false)}\r\n\r\n {UtilFunctions.formatNumber(row.steiaOutputImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.steiaEarningsImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.steiaValueAddedImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.steiaEmploymentImpact, 0, false, false)}\r\n\r\n {UtilFunctions.formatNumber(row.lteiaOutputImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.lteiaEarningsImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.lteiaValueAddedImpact, 0, true, true)}\r\n {UtilFunctions.formatNumber(row.lteiaEmploymentImpact, 0, false, false)}\r\n \r\n );\r\n })}\r\n {emptyRows > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n
\r\n }\r\n label=\"Condense row display\"\r\n />\r\n
\r\n );\r\n}\r\nexport default AnalysisTable;","import * as types from \"../actions\";\r\nimport axios from \"axios\";\r\n\r\nimport { API_URL } from \"../constants/database\";\r\n\r\n/**\r\n * ANALYSIS OUTPUT\r\n */\r\n// Initalize request event\r\nexport const requestAnalysisResults = () => ({\r\n type: types.ANALYSIS_RESULTS_REQUEST\r\n});\r\n// Request success event\r\nexport const requestAnalysisResultsSuccess = (payload) => ({\r\n type: types.ANALYSIS_RESULTS_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestAnalysisResultsError = (payload) => ({\r\n type: types.ANALYSIS_RESULTS_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchAnalysisResults = payload => (dispatch, getState) => {\r\n dispatch(requestAnalysisResults());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchAnalysisResults\");\r\n const url = `${API_URL}/analysisResults`;\r\n const config = {\r\n method: \"post\",\r\n url,\r\n data: payload\r\n }\r\n axios(config)\r\n .then(function (response) {\r\n console.log(\"Action: fetchAnalysisResults.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestAnalysisResultsSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestAnalysisResultsError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * GP OUTPUT\r\n */\r\n// Initalize request event\r\nexport const requestRoiOutputData = () => ({\r\n type: types.GP_OUTPUT_REQUEST\r\n});\r\n// Request success event\r\nexport const requestRoiOutputDataSuccess = (payload) => ({\r\n type: types.GP_OUTPUT_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestRoiOutputDataError = (payload) => ({\r\n type: types.GP_OUTPUT_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchGpOutput = payload => (dispatch, getState) => {\r\n dispatch(requestRoiOutputData());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchGpOutput new projects = \" + payload.newProjects + \", segments = \" + payload.segments);\r\n let config;\r\n const url = `${API_URL}/projectRois`;\r\n if (payload.newProjects.length === 0 && payload.segments === \"\") {\r\n config = {\r\n method: \"get\",\r\n url\r\n };\r\n } else {\r\n config = {\r\n method: \"post\",\r\n url,\r\n data: payload\r\n }\r\n }\r\n axios(config)\r\n .then(function (response) {\r\n console.log(\"Action: fetchGpOutput.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestRoiOutputDataSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestRoiOutputDataError(error))\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * ML OUTPUT\r\n */\r\n// Initalize request event\r\nexport const requestMlOutputData = () => ({\r\n type: types.ML_OUTPUT_REQUEST\r\n});\r\n// Request success event\r\nexport const requestMlOutputDataSuccess = (payload) => ({\r\n type: types.ML_OUTPUT_SUCCESS,\r\n payload\r\n});\r\n// Request error event\r\nexport const requestMlOutputDataError = (payload) => ({\r\n type: types.ML_OUTPUT_ERROR,\r\n payload\r\n});\r\n\r\nexport const fetchMlOutput = payload => (dispatch, getState) => {\r\n dispatch(requestMlOutputData());\r\n return new Promise((resolve, reject) => {\r\n console.log(\"Action: fetchMlOutput new projects = \" + payload.newProjects + \", segments = \" + payload.segments);\r\n let config;\r\n const url = `${API_URL}/managedLaneRois`;\r\n if (payload.newProjects.length === 0 && payload.segments === \"\") {\r\n config = {\r\n method: \"get\",\r\n url\r\n };\r\n } else {\r\n config = {\r\n method: \"post\",\r\n url,\r\n data: payload\r\n }\r\n }\r\n axios(config)\r\n .then(function (response) {\r\n console.log(\"Action: fetchMlOutput.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n dispatch(requestMlOutputDataSuccess(response.data));\r\n })\r\n .catch(function (error) {\r\n // handle error in reducer\r\n dispatch(requestMlOutputDataError(error))\r\n });\r\n });\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport axios from \"axios\";\r\nimport {CircularProgress} from \"@material-ui/core\";\r\n\r\nimport * as classFunctions from \"../js/classfunctions\";\r\nimport * as UtilFunctions from \"../js/utils\"\r\n\r\nimport AnalysisTable from \"../components/AnalysisTable\";\r\nimport { fetchAnalysisResults } from \"../actions/analysis\";\r\nimport { API_URL } from \"../constants/database\";\r\n\r\nclass Analysis extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n goToProjectsPage: false,\r\n eiaGraphShowing: \"short-term\",\r\n nothingToFetch: false,\r\n showingProjectTotals: true,\r\n bigNumbersClass: \"\",\r\n negNumbersClass: \"\",\r\n eiaBreaks: [0, 0, 0, 0, 0],\r\n eiaBeingAnalyzed: { outputImpact: \"\", earningsImpact: \"\", valueAddedImpact: \"\", employmentImpact: 0 },\r\n totalProjectCount: this.props.totalProjectCount,\r\n newProjects: this.props.newProjects,\r\n scenarioProjects: this.props.scenarioProjects,\r\n selectedScenario: this.props.selectedScenario,\r\n modelParameters: this.props.modelParameters,\r\n modelParametersAreDefault: this.props.modelParametersAreDefault,\r\n projectBeingAnalyzed: null,\r\n analysisResults: this.props.analysisResults,\r\n analysisTotals: this.props.analysisTotals,\r\n analysisCounts: this.props.analysisCounts,\r\n exporting: false\r\n }\r\n console.log(\"[Analysis]\");\r\n\r\n this.updateEIAGraphShowing = this.updateEIAGraphShowing.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n console.log(\"Analysis-->componentDidMount scenarioProjects = \" + this.state.scenarioProjects.length + \", totalProjectCount = \" + this.state.totalProjectCount);\r\n let np = this.state.newProjects;\r\n let sp = this.state.scenarioProjects;\r\n if (sp.length === 0 && np.length === 0) {\r\n this.setState({ nothingToFetch: true });\r\n return;\r\n }\r\n\r\n let list = [];\r\n sp.forEach(item => {\r\n list.push(item.segment);\r\n });\r\n\r\n let segments = list.toString();\r\n let payload = { segments: segments, newProjects: np };\r\n if (!this.state.modelParametersAreDefault) payload.modelParameter = this.state.modelParameters;\r\n\r\n this.setState({analysisPayload: payload});\r\n this.props.fetchAnalysisResults(payload);\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n let stateUpdate = {};\r\n if (nextProps.analysisCounts !== prevState.analysisCounts) {\r\n console.log(\"Analysis getDerivedStateFromProps\");\r\n stateUpdate.analysisCounts = nextProps.analysisCounts;\r\n stateUpdate.analysisTotals = nextProps.analysisTotals;\r\n stateUpdate.projectBeingAnalyzed = nextProps.analysisTotals;\r\n return stateUpdate;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n console.log(\"Analysis componentDidUpdate\");\r\n if (prevProps.analysisCounts !== this.props.analysisCounts) {\r\n console.log(\"##Updating ALL projects from Did UPDATE\");\r\n this.setAndAnimateGraph(null);\r\n }\r\n }\r\n\r\n goToProjectsPage = () => {\r\n this.setState({ goToProjectsPage: true })\r\n }\r\n\r\n resultItemChecked = (item) => {\r\n this.setAndAnimateGraph(item);\r\n }\r\n\r\n exportToExcel = () => {\r\n console.log(\"Export to excel...\");\r\n if(this.state.exporting) {\r\n return;\r\n }\r\n let np = this.state.newProjects;\r\n let sp = this.state.scenarioProjects;\r\n if (sp.length === 0 && np.length === 0) {\r\n this.setState({ nothingToFetch: true });\r\n return;\r\n }\r\n this.setState({exporting: true});\r\n\r\n let list = [];\r\n sp.forEach(item => {\r\n list.push(item.segment);\r\n });\r\n\r\n let segments = list.toString();\r\n let payload = { segments: segments, newProjects: np };\r\n if (!this.state.modelParametersAreDefault) payload.modelParameter = this.state.modelParameters;\r\n\r\n const url = `${API_URL}/export`;\r\n const config = {\r\n method: \"post\",\r\n url,\r\n Accept: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n responseType: \"blob\",\r\n data: payload\r\n }\r\n\r\n axios(config)\r\n // 1. convert response data to blob\r\n .then((response) => {\r\n console.log(\"Action: export-xls.then-->status=\" + response.status + \", statusText=\" + response.statusText + \", data length=\" + response.data.length);\r\n \r\n if (typeof window.navigator.msSaveBlob !== 'undefined') {\r\n // IE workaround for \"HTML7007: One or more blob URLs were \r\n // revoked by closing the blob for which they were created. \r\n // These URLs will no longer resolve as the data backing \r\n // the URL has been freed.\"\r\n window.navigator.msSaveBlob(response.data, 'analysis-results.xlsx');\r\n }\r\n else {\r\n // 2. Create blob link to download\r\n const url = window.URL.createObjectURL(response.data);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', 'analysis-results.xlsx');\r\n\r\n // 3. Append to html page\r\n document.body.appendChild(link);\r\n \r\n // 4. Force download\r\n link.click();\r\n\r\n // 5. Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n }\r\n this.setState({exporting: false});\r\n \r\n })\r\n .catch((error) => {\r\n // handle error in reducer\r\n this.setState({exporting: false});\r\n console.log(`Excel Export error ${error.message}`);\r\n });\r\n\r\n\r\n // ***** OLD CSV EXPORT OF RESULTS *************\r\n // // Temporary delimiter characters unlikely to be typed by keyboard\r\n // // This is to avoid accidentally splitting the actual contents\r\n // // Vertical tab character = 11\r\n // let tmpColDelim = String.fromCharCode(11);\r\n // // actual delimiter characters for CSV format\r\n // let colDelim = '\",\"', rowDelim = '\\r\\n';\r\n\r\n // let rows = this.props.analysisResults;\r\n // let fields = Object.keys(rows[0]);\r\n // let idx, numFields = fields.length;\r\n // let csv = '\"' + fields[0];\r\n // for (idx = 1; idx < numFields; idx++) {\r\n // csv += colDelim + fields[idx];\r\n // }\r\n // csv += '\"' + rowDelim;\r\n\r\n // for (let rowIdx = 0, numRows = rows.length; rowIdx < numRows; rowIdx++) {\r\n // let row = rows[rowIdx];\r\n // let csvRow = row[fields[0]];\r\n // for (idx = 1; idx < numFields; idx++) {\r\n // csvRow += tmpColDelim + row[fields[idx]];\r\n // }\r\n // csv += csvRow.split(tmpColDelim).join(\",\") + rowDelim;\r\n // }\r\n\r\n // // Data URI\r\n // let csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);\r\n\r\n // // For IE (tested 10+)\r\n // let filename = \"SET_Analysis.csv\";\r\n // if (window.navigator.msSaveOrOpenBlob) {\r\n // let blob = new Blob([decodeURIComponent(encodeURI(csv))], {\r\n // type: \"text/csv;charset=utf-8;\"\r\n // });\r\n // navigator.msSaveBlob(blob, filename);\r\n // } else {\r\n // var el = document.createElement('a'); // let doesn't work in Firefox?\r\n // el.href = csvData;\r\n // el.download = filename;\r\n // if (window.navigator.userAgent.indexOf(\"Firefox\") > -1) {\r\n // //el.href = 'data:application/vnd.ms-excel;utf-8,' + encodeURIComponent(csv);\r\n // //el.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));\r\n // el.dispatchEvent(new MouseEvent('click'));\r\n // } else {\r\n // //el.target = '_blank';\r\n // el.click();\r\n // }\r\n // }\r\n }\r\n\r\n updateEIAGraphShowing(which) {\r\n this.setState({ eiaGraphShowing: which });\r\n this.setAndAnimateGraph({ projectID: -2, eiaType: which });\r\n }\r\n\r\n setAndAnimateGraph(item) {\r\n let pba, stateUpdate = {};\r\n let isShortTerm = (this.state.eiaGraphShowing === \"short-term\");\r\n if (item) {\r\n switch (item.projectID) {\r\n case -2:\r\n // Same analysis, just switching between short and long term eia\r\n isShortTerm = (item.eiaType === \"short-term\");\r\n pba = this.state.projectBeingAnalyzed;\r\n break;\r\n case -1:\r\n // Aggregate totals\r\n pba = this.state.analysisTotals;\r\n stateUpdate.showingProjectTotals = true;\r\n stateUpdate.projectBeingAnalyzed = this.state.analysisTotals;\r\n break;\r\n default:\r\n // Specific project\r\n pba = item;\r\n stateUpdate.showingProjectTotals = false;\r\n stateUpdate.projectBeingAnalyzed = item;\r\n break;\r\n }\r\n } else {\r\n // Just got the results\r\n this.setState({ analysisResults: this.props.analysisResults });\r\n pba = this.state.projectBeingAnalyzed;\r\n if (!pba) return;\r\n }\r\n\r\n let negNumFactor = 1;\r\n let eiaBreaks = [];\r\n let eiaBeingAnalyzed = {};\r\n if (isShortTerm) {\r\n eiaBeingAnalyzed.outputImpact = pba.steiaOutputImpact;\r\n eiaBeingAnalyzed.earningsImpact = pba.steiaEarningsImpact;\r\n eiaBeingAnalyzed.valueAddedImpact = pba.steiaValueAddedImpact;\r\n eiaBeingAnalyzed.employmentImpact = pba.steiaEmploymentImpact;\r\n } else {\r\n if (pba.lteiaOutputImpact < 0) negNumFactor = -1;\r\n eiaBeingAnalyzed.outputImpact = Math.abs(pba.lteiaOutputImpact);\r\n eiaBeingAnalyzed.earningsImpact = Math.abs(pba.lteiaEarningsImpact);\r\n eiaBeingAnalyzed.valueAddedImpact = Math.abs(pba.lteiaValueAddedImpact);\r\n eiaBeingAnalyzed.employmentImpact = pba.lteiaEmploymentImpact;\r\n }\r\n stateUpdate.eiaBeingAnalyzed = eiaBeingAnalyzed;\r\n\r\n let largest = (eiaBeingAnalyzed.outputImpact > eiaBeingAnalyzed.earningsImpact) ? eiaBeingAnalyzed.outputImpact : eiaBeingAnalyzed.earningsImpact;\r\n if (eiaBeingAnalyzed.valueAddedImpact > largest) largest = eiaBeingAnalyzed.valueAddedImpact;\r\n\r\n let interval = largest / 5;\r\n if (largest < 6) {\r\n interval = 1;\r\n } else {\r\n if (interval > 1000) {\r\n interval = (parseInt(interval / 1000) + 1) * 1000; // Round the interval up to the nearest 1000\r\n } else if (interval > 100) {\r\n interval = (parseInt(interval / 100) + 1) * 100; // Round the interval up to the nearest 100\r\n } else if (interval > 10) {\r\n interval = (parseInt(interval / 10) + 1) * 10; // Round the interval up to the nearest 10\r\n } else {\r\n interval = parseInt(interval + 1);\r\n }\r\n }\r\n let minVal = interval * 0.25;\r\n let minValShow = interval === 1 ? 0.5 : interval * 0.25;\r\n let maxVal = largest > 5 ? interval * 5 : 5;\r\n let bigNumbersClass = largest < 1000000 ? \"\" : \"big-numbers\";\r\n let negNumbersClass = negNumFactor === 1 ? \"\" : \"neg-numbers\";\r\n stateUpdate.bigNumbersClass = bigNumbersClass;\r\n stateUpdate.negNumbersClass = negNumbersClass;\r\n\r\n // Set the break levels\r\n for (let idx = 0; idx < 5; idx++) {\r\n eiaBreaks[idx] = (interval * (idx + 1)) * negNumFactor;\r\n }\r\n stateUpdate.eiaBreaks = eiaBreaks;\r\n\r\n let decimalPlaces = maxVal > 10 ? 0 : 1;\r\n let tmpVal = eiaBeingAnalyzed.outputImpact < minVal ? minVal : eiaBeingAnalyzed.outputImpact;\r\n let output = (100 * (tmpVal / maxVal)) + \"%\";\r\n tmpVal = eiaBeingAnalyzed.earningsImpact < minVal ? minVal : eiaBeingAnalyzed.earningsImpact;\r\n let earnings = (100 * (tmpVal / maxVal)) + \"%\";\r\n tmpVal = eiaBeingAnalyzed.valueAddedImpact < minVal ? minVal : eiaBeingAnalyzed.valueAddedImpact;\r\n let valueAdded = (100 * (tmpVal / maxVal)) + \"%\";\r\n\r\n if (eiaBeingAnalyzed.outputImpact < minValShow) {\r\n eiaBeingAnalyzed.outputImpact = \"\";\r\n } else {\r\n eiaBeingAnalyzed.outputImpact = UtilFunctions.formatNumber(eiaBeingAnalyzed.outputImpact * negNumFactor, decimalPlaces, true, true);\r\n }\r\n if (eiaBeingAnalyzed.earningsImpact < minValShow) {\r\n eiaBeingAnalyzed.earningsImpact = \"\";\r\n } else {\r\n eiaBeingAnalyzed.earningsImpact = UtilFunctions.formatNumber(eiaBeingAnalyzed.earningsImpact * negNumFactor, decimalPlaces, true, true);\r\n }\r\n if (eiaBeingAnalyzed.valueAddedImpact < minValShow) {\r\n eiaBeingAnalyzed.valueAddedImpact = \"\";\r\n } else {\r\n eiaBeingAnalyzed.valueAddedImpact = UtilFunctions.formatNumber(eiaBeingAnalyzed.valueAddedImpact * negNumFactor, decimalPlaces, true, true);\r\n }\r\n\r\n this.setState(stateUpdate);\r\n\r\n // Reset the graph \r\n classFunctions.removeClass(document.getElementById(\"eia-graph\"), \"animate\");\r\n document.getElementById(\"graph-output\").style.height = \"0\";\r\n document.getElementById(\"graph-earnings\").style.height = \"0\";\r\n document.getElementById(\"graph-value-added\").style.height = \"0\";\r\n\r\n setTimeout(function () {\r\n // Set the height of the graphs bars before animation\r\n document.getElementById(\"graph-output\").style.height = output;\r\n document.getElementById(\"graph-earnings\").style.height = earnings;\r\n document.getElementById(\"graph-value-added\").style.height = valueAdded;\r\n\r\n classFunctions.addClass(document.getElementById(\"eia-graph\"), \"animate\");\r\n }, 100);\r\n }\r\n\r\n render() {\r\n if (this.state.goToProjectsPage === true) {\r\n return \r\n }\r\n console.log(\"Analysis.render scenarioProjects = \" + this.state.scenarioProjects.length);\r\n const {exporting} = this.state;\r\n return (\r\n \r\n
\r\n
\r\n \r\n {this.state.selectedScenario.scenarioName === \"\" ? (

Results are not from a saved scenario

) : (

Scenario: {this.state.selectedScenario.scenarioName}

)}\r\n {this.state.scenarioLastSaved}\r\n \r\n Export to Excel {exporting && }\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Short-Term EIA\r\n

\r\n \r\n Long-Term EIA\r\n \r\n\r\n
\r\n
\r\n

ECONOMIC IMPACT ANALYSIS RESULTS ({this.props.dataInfo.dataYear} $000{this.state.eiaGraphShowing === \"long-term\" ? \"/Year\" : null})

\r\n\r\n
\r\n
\r\n
{UtilFunctions.formatNumber(this.state.eiaBreaks[4], 0, true, true)}
\r\n
{UtilFunctions.formatNumber(this.state.eiaBreaks[3], 0, true, true)}
\r\n
{UtilFunctions.formatNumber(this.state.eiaBreaks[2], 0, true, true)}
\r\n
{UtilFunctions.formatNumber(this.state.eiaBreaks[1], 0, true, true)}
\r\n
{UtilFunctions.formatNumber(this.state.eiaBreaks[0], 0, true, true)}
\r\n
$0
\r\n
\r\n
\r\n
{this.state.eiaGraphShowing === \"long-term\" ?
Annual
: null}Output
\r\n {this.state.eiaBeingAnalyzed.outputImpact}\r\n
\r\n
\r\n
{this.state.eiaGraphShowing === \"long-term\" ?
Annual
: null}Earnings
\r\n {this.state.eiaBeingAnalyzed.earningsImpact}\r\n
\r\n
\r\n
{this.state.eiaGraphShowing === \"long-term\" ?
Annual
: null}Value-Added
\r\n {this.state.eiaBeingAnalyzed.valueAddedImpact}\r\n
\r\n
\r\n
\r\n\r\n
\r\n

EMPLOYMENT

\r\n {UtilFunctions.formatNumber(this.state.eiaBeingAnalyzed.employmentImpact, 0, false, false)}\r\n

Job-Years Under {this.state.eiaGraphShowing === \"long-term\" ? \"Long\" : \"Short\"}-Term EIA

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

{this.state.showingProjectTotals ? \"Aggregate Totals\" : this.state.projectBeingAnalyzed.projectDescription}

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

BENEFIT-COST RATIO

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.benefitCostRatio, 2, false, false) : \"-\"}\r\n
\r\n
\r\n

ECONOMIC NET PRESENT VALUE

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.economicNetPresentValue / 1000, 0, true, true) : \"-\"} (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n\r\n
\r\n
\r\n

TRAVEL TIME SAVINGS

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.discountedTravelTimeSavings / 1000, 0, true, true) : \"-\"}\r\n (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n

SAFETY BENEFITS

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.discountedSafetySavings / 1000, 0, true, true) : \"-\"}\r\n (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n

VEHICLE OPERATING COST SAVINGS

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.discountedVehicleOperatingCostSavings / 1000, 0, true, true) : \"-\"}\r\n (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n

EMISSION COST SAVINGS

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.discountedEmissionCostSavings / 1000, 0, true, true) : \"-\"}\r\n (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n

FREIGHT LOGISTICS BENEFITS

\r\n {this.state.projectBeingAnalyzed ? UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.discountedFreightLogisticsBenefits / 1000, 0, true, true) : \"-\"}\r\n (Thousands of {this.props.dataInfo.dataYear}$)\r\n
\r\n
\r\n\r\n
\r\n
\r\n

MANAGED LANE

\r\n

FINANCIAL NET PRESENT VALUE

\r\n {\r\n this.state.projectBeingAnalyzed && this.state.projectBeingAnalyzed.improvementType === \"MGLANE\" ?\r\n UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.financialNetPresentValue / 1000, 0, true, true) : \"N/A\"\r\n }\r\n (Thousands of YOE $)\r\n
\r\n
\r\n

MANAGED LANE

\r\n

AUTO TOTAL REVENUE

\r\n {\r\n this.state.projectBeingAnalyzed && this.state.projectBeingAnalyzed.improvementType === \"MGLANE\" ?\r\n UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.totalAutoRevenue / 1000, 0, true, true) : \"N/A\"\r\n }\r\n (Thousands of YOE $)\r\n
\r\n
\r\n

MANAGED LANE

\r\n

TRUCK TOTAL REVENUE

\r\n {\r\n this.state.projectBeingAnalyzed && this.state.projectBeingAnalyzed.improvementType === \"MGLANE\" ?\r\n UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.totalTruckRevenue / 1000, 0, true, true) : \"N/A\"\r\n }\r\n (Thousands of YOE $)\r\n
\r\n
\r\n

MANAGED LANE

\r\n

FINANCIAL INTERNAL RATE OF RETURN

\r\n {\r\n this.state.projectBeingAnalyzed && this.state.projectBeingAnalyzed.improvementType === \"MGLANE\" ?\r\n (UtilFunctions.formatNumber(this.state.projectBeingAnalyzed.financialIRR * 100, 1, false, true) + \"%\") : \"N/A\"\r\n }\r\n
\r\n
\r\n\r\n
\r\n
*Unless noted otherwise, all dollar values are thousands of discounted ${this.props.dataInfo.dataYear}*
\r\n
\r\n\r\n
\r\n
\r\n\r\n {this.state.nothingToFetch ? null : (\r\n
\r\n
\r\n
\r\n \r\n Select a project to see its metrics\r\n \r\n
\r\n
\r\n ** Includes capital and O&M costs. Managed lane projects also include toll collection costs and renewal and replacement costs.\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n\r\n {this.state.nothingToFetch ? (
No projects have been selected for analysis.
) :\r\n \r\n }\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\nconst mapStateToProps = state => ({\r\n dataInfo: state.scenario.projects.dataInfo,\r\n selectedScenario: state.scenario.projects.selectedScenario ? state.scenario.projects.selectedScenario : { scenarioName: \"\", description: \"\" },\r\n modelParametersAreDefault: state.scenario.projects.modelParametersAreDefault,\r\n modelParameters: state.scenario.projects.modelParameters ? state.scenario.projects.modelParameters : {},\r\n analysisResults: state.scenario.projects.analysisResults ? state.scenario.projects.analysisResults : [],\r\n analysisTotals: state.scenario.projects.analysisTotals ? state.scenario.projects.analysisTotals : null,\r\n analysisCounts: state.scenario.projects.analysisCounts ? state.scenario.projects.analysisCounts : null,\r\n newProjects: state.scenario.projects.newProjects ? state.scenario.projects.newProjects : [],\r\n scenarioProjects: state.scenario.projects.scenarioProjects ? state.scenario.projects.scenarioProjects : [],\r\n totalProjectCount: state.scenario.projects.totalProjectCount ? state.scenario.projects.totalProjectCount : 0\r\n});\r\nconst mapDispatchToProps = dispatch => ({\r\n fetchAnalysisResults: payload => dispatch(fetchAnalysisResults(payload))\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Analysis);\r\n","import React, { Component } from 'react';\r\nimport { Provider } from \"react-redux\";\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\n\r\nimport Header from \"../containers/Header\";\r\nimport Home from \"../pages/Home.jsx\";\r\nimport ModelParameters from \"../pages/ModelParameters.jsx\";\r\nimport Scenarios from \"../pages/Scenarios.jsx\";\r\nimport Projects from \"../pages/Projects.jsx\";\r\nimport Analysis from \"../pages/Analysis.jsx\";\r\nimport store from \"../store\";\r\n\r\nexport const history = createBrowserHistory({\r\n basename: process.env.PUBLIC_URL\r\n});\r\n\r\nclass App extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// This must be the first line in src/index.js\r\nimport 'react-app-polyfill/ie11';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './sass/global.scss';\r\nimport App from './root/App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import * as types from \"../../actions\";\r\n\r\nimport { MODEL_PARAMETERS_INFO } from \"../../constants/defaults\";\r\n \r\n const initState = {\r\n userInfo: {\r\n // Roles: admin, editor, viewer, developer, guest\r\n id: \"developer@hdrinc.com\",\r\n name: \"HDR Developer\",\r\n role: \"Developer\"\r\n // id: \"tester@hdrinc.com\",\r\n // name: \"HDR Tester\",\r\n // role: \"Viewer\"\r\n // id: \"fdot@fdot.com\",\r\n // name: \"FDOT Editor\",\r\n // role: \"Editor\"\r\n },\r\n dataInfo: {\r\n dataYear: 2018,\r\n baseDataUpdate: \"8/20/2019 3:35 PM\",\r\n modelParametersUpdate: \"1/3/2019 3:13 AM\"\r\n },\r\n parameterStatus: types.PARAMETERS_STATUS.UNINITIALIZED,\r\n parameterStatusMessage: \"\",\r\n modelParametersAreDefault: true,\r\n modelParametersInfo: MODEL_PARAMETERS_INFO,\r\n modelParameters: {},\r\n updatedModelParameters: [],\r\n scenarioSegmentStatus: types.LOADSTATUS.UNINITIALIZED,\r\n scenarioSegmentStatusMessage: \"\",\r\n reloadScenarios: false,\r\n savedScenarios: [],\r\n selectedScenario: {scenarioName: \"\",description:\"\"},\r\n deleteStatus: types.DELETESTATUS.UNINITIALIZED,\r\n deleteStatusMessage: \"\",\r\n copyStatus: types.COPYSTATUS.UNINITIALIZED,\r\n copyStatusMessage: \"\",\r\n copyScenarioResults: null,\r\n loadedProjects: [],\r\n loadStatus: types.LOADSTATUS.UNINITIALIZED,\r\n loadStatusMessage: \"\",\r\n saveStatus: types.SAVESTATUS.UNINITIALIZED,\r\n saveStatusMessage: \"\",\r\n savedScenarioResults: null,\r\n selectedProjects: [],\r\n newProjects: [],\r\n scenarioProjects: [],\r\n scenarioProjectCount: 0,\r\n totalCost: 0,\r\n totalProjectCount: 0,\r\n analysisCounts: {gpRecs: 0, mlRecs: 0, totalRecs: 0},\r\n analysisResults: [],\r\n analysisTotals: null,\r\n projectGpResults: [],\r\n projectGpTotals: null,\r\n projectMlResults: [],\r\n projectMlTotals: null\r\n };\r\n \r\n export default (state = initState, action) => {\r\n switch (action.type) {\r\n // Model parameters\r\n case types.GET_PARAMETERS_REQUEST:\r\n return {\r\n ...state,\r\n parameterStatus: types.PARAMETERS_STATUS.REQUESTING\r\n }\r\n case types.GET_PARAMETERS_SUCCESS: {\r\n console.log(\"GET_PARAMETERS_SUCCESS=\" + action.payload.length);\r\n let defaultIdx = 0;\r\n for (let idx = 0, len = action.payload.length; idx < len; idx++) {\r\n if (action.payload[idx].isDefault) {\r\n defaultIdx = idx;\r\n break;\r\n }\r\n }\r\n return {\r\n ...state,\r\n modelParameters: action.payload[defaultIdx],\r\n parameterStatus: types.PARAMETERS_STATUS.RECEIVED\r\n };\r\n }\r\n case types.GET_PARAMETERS_ERROR: {\r\n const parameterStatus = types.PARAMETERS_STATUS.ERROR;\r\n let msg = \"Retrieving model parameters - \" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n parameterStatus,\r\n parameterStatusMessage: msg\r\n }\r\n }\r\n case types.PUT_PARAMETERS_REQUEST:\r\n return {\r\n ...state,\r\n parameterStatus: types.PARAMETERS_STATUS.POSTING\r\n }\r\n case types.PUT_PARAMETERS_SUCCESS: {\r\n return {\r\n ...state,\r\n //modelParameters: action.payload,\r\n parameterStatus: types.PARAMETERS_STATUS.POSTED\r\n };\r\n }\r\n case types.PUT_PARAMETERS_ERROR: {\r\n const parameterStatus = types.PARAMETERS_STATUS.ERROR;\r\n let msg = \"Posting model parameters - \" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n parameterStatus,\r\n parameterStatusMessage: msg\r\n }\r\n }\r\n case types.SET_PARAMETERS_ARE_DEFAULT: {\r\n return {\r\n ...state,\r\n modelParametersAreDefault: action.payload\r\n }\r\n }\r\n case types.SET_PARAMETERS_INFO: {\r\n return {\r\n ...state,\r\n modelParametersInfo: action.payload\r\n }\r\n }\r\n case types.SET_UPDATED_PARAMETERS: {\r\n return {\r\n ...state,\r\n updatedModelParameters: action.payload\r\n }\r\n }\r\n case types.SET_PARAMETERS: {\r\n return {\r\n ...state,\r\n modelParameters: action.payload\r\n }\r\n }\r\n\r\n // Scenarios summaries\r\n case types.LOAD_SCENARIO_REQUEST:\r\n return {\r\n ...state,\r\n loadStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.LOAD_SCENARIO_SUCCESS: {\r\n for (let idx = 0, len = action.payload.length; idx < len; idx++) {\r\n let tmpDate = new Date(action.payload[idx].lastSaved);\r\n let formattedDate = `${(tmpDate.getMonth() + 1)}/${tmpDate.getDate()}/${tmpDate.getFullYear()}\r\n ${tmpDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })}`;\r\n action.payload[idx].lastSaved = formattedDate;\r\n\r\n tmpDate = new Date(action.payload[idx].dateCreated);\r\n formattedDate = `${(tmpDate.getMonth() + 1)}/${tmpDate.getDate()}/${tmpDate.getFullYear()}\r\n ${tmpDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })}`;\r\n action.payload[idx].dateCreated = formattedDate;\r\n }\r\n return {\r\n ...state,\r\n savedScenarios: action.payload,\r\n loadStatus: types.LOADSTATUS.LOADED\r\n };\r\n }\r\n case types.LOAD_SCENARIO_ERROR: {\r\n const loadStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Services.getRoiOutputData.catch-->message=\" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n loadStatus,\r\n loadStatusMessage: msg\r\n }\r\n }\r\n case types.SET_SELECTED_SCENARIO: {\r\n return {\r\n ...state,\r\n selectedScenario: action.payload\r\n }\r\n }\r\n case types.RELOAD_SCENARIOS: {\r\n return {\r\n ...state,\r\n reloadScenarios: action.payload\r\n }\r\n }\r\n\r\n // Scenario segments\r\n case types.GET_SCENARIO_SEGMENTS_REQUEST:\r\n return {\r\n ...state,\r\n scenarioSegmentStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.GET_SCENARIO_SEGMENTS_SUCCESS: {\r\n let projects = [];\r\n let ap = action.payload;\r\n let segments = ap.projectSegments;\r\n for (let idx = 0, len = segments.length; idx < len; idx++) {\r\n let project = {\r\n segment: segments[idx],\r\n localName: \"\",\r\n improvement: \"\",\r\n district: \"\",\r\n totalCost: 0\r\n };\r\n projects.push(project);\r\n }\r\n let tmpDate = new Date(ap.lastSaved);\r\n let formattedDate = `${(tmpDate.getMonth() + 1)}/${tmpDate.getDate()}/${tmpDate.getFullYear()} ${tmpDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })}`;\r\n let mpi = {\r\n id: ap.modelParameter.id,\r\n isDefault: ap.modelParameter.isDefault,\r\n isModified: false,\r\n action: \"\",\r\n lastSaved: formattedDate\r\n }\r\n return {\r\n ...state,\r\n selectedProjects: projects,\r\n modelParametersInfo: mpi,\r\n newProjects: ap.newProjects,\r\n modelParameters: ap.modelParameter,\r\n scenarioSegmentStatus: types.LOADSTATUS.LOADED,\r\n };\r\n }\r\n case types.GET_SCENARIO_SEGMENTS_ERROR: {\r\n const scenarioSegmentStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Services.getScenarioSegments.catch-->message=\" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n scenarioSegmentStatus,\r\n scenarioSegmentStatusMessage: msg\r\n }\r\n }\r\n\r\n // Save scenario\r\n case types.SAVE_SCENARIO_REQUEST:\r\n return {\r\n ...state,\r\n saveStatus: types.SAVESTATUS.SAVING\r\n }\r\n case types.SAVE_SCENARIO_SUCCESS: {\r\n const reloadScenarios = true;\r\n return {\r\n ...state,\r\n savedScenarioResults: action.payload,\r\n saveStatus: types.SAVESTATUS.SAVED,\r\n reloadScenarios\r\n };\r\n }\r\n case types.UPDATE_SCENARIO_SUCCESS: {\r\n const reloadScenarios = true;\r\n return {\r\n ...state,\r\n savedScenarioResults: action.payload,\r\n saveStatus: types.SAVESTATUS.SAVED,\r\n reloadScenarios\r\n };\r\n }\r\n case types.SAVE_SCENARIO_ERROR: {\r\n const saveStatus = types.SAVESTATUS.ERROR;\r\n let msg = \"Saving scenario - \" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n saveStatus,\r\n saveStatusMessage: msg\r\n }\r\n }\r\n\r\n // Delete scenario\r\n case types.DELETE_SCENARIO_REQUEST:\r\n return {\r\n ...state,\r\n deleteStatus: types.DELETESTATUS.DELETING\r\n }\r\n case types.DELETE_SCENARIO_SUCCESS: {\r\n return {\r\n ...state,\r\n deleteStatus: types.DELETESTATUS.DELETED\r\n };\r\n }\r\n case types.DELETE_SCENARIO_ERROR: {\r\n const deleteStatus = types.DELETESTATUS.ERROR;\r\n let msg = \"Deleting scenario - \" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n deleteStatus,\r\n deleteStatusMessage: msg\r\n }\r\n }\r\n\r\n // Copy scenario\r\n case types.COPY_SCENARIO_REQUEST:\r\n return {\r\n ...state,\r\n copyStatus: types.COPYSTATUS.COPYING\r\n }\r\n case types.COPY_SCENARIO_SUCCESS: {\r\n const reloadScenarios = true;\r\n return {\r\n ...state,\r\n copyScenarioResults: action.payload,\r\n copyStatus: types.COPYSTATUS.COPIED,\r\n reloadScenarios\r\n };\r\n }\r\n case types.COPY_SCENARIO_ERROR: {\r\n const copyStatus = types.COPYSTATUS.ERROR;\r\n let msg = \"Copying scenario - \" + action.payload.message;\r\n\r\n return {\r\n ...state,\r\n copyStatus,\r\n copyStatusMessage: msg\r\n }\r\n }\r\n\r\n // Project summaries\r\n case types.LOAD_PROJECT_REQUEST:\r\n return {\r\n ...state,\r\n loadStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.LOAD_PROJECT_SUCCESS: {\r\n const {newProjects} = state;\r\n let totalProjectCount = action.payload.length + newProjects.length;\r\n let totalCost = 0;\r\n action.payload.forEach(project => {\r\n totalCost += parseInt(project.totalCost);\r\n });\r\n newProjects.forEach(project => {\r\n totalCost += parseInt(project.totalCost);\r\n });\r\n\r\n console.log(\"ProjectTable total cost=\" + totalCost);\r\n return {\r\n ...state,\r\n loadedProjects: action.payload,\r\n loadStatus: types.LOADSTATUS.LOADED,\r\n totalCost,\r\n totalProjectCount\r\n };\r\n }\r\n case types.LOAD_PROJECT_ERROR: {\r\n const loadStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Services.getRoiProjectData.catch-->message=\"+action.payload.message;\r\n\r\n return {\r\n ...state,\r\n loadStatus,\r\n loadStatusMessage: msg\r\n }\r\n }\r\n case types.SET_SELECTED_PROJECTS: {\r\n return {\r\n ...state,\r\n selectedProjects: action.payload\r\n }\r\n }\r\n case types.SET_NEW_PROJECTS: {\r\n const {loadedProjects} = state;\r\n let totalProjectCount = action.payload.length + loadedProjects.length;\r\n let totalCost = 0;\r\n action.payload.forEach(project => {\r\n totalCost += parseInt(project.totalCost);\r\n });\r\n loadedProjects.forEach(project => {\r\n totalCost += parseInt(project.totalCost);\r\n });\r\n return {\r\n ...state,\r\n newProjects: action.payload,\r\n totalProjectCount,\r\n totalCost\r\n }\r\n }\r\n case types.SET_SCENARIO_PROJECTS: {\r\n console.log(\"SET_SCENARIO_PROJECTS=\" + action.payload.length);\r\n return {\r\n ...state,\r\n scenarioProjects: action.payload\r\n }\r\n }\r\n // Analysis output \r\n case types.ANALYSIS_RESULTS_REQUEST:\r\n return {\r\n ...state,\r\n loadStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.ANALYSIS_RESULTS_SUCCESS: {\r\n console.log(\"Analysis recs =\" + action.payload.length);\r\n let counts = { gpRecs: 0, mlRecs: 0, totalRecs: 0 };\r\n let totals = {\r\n discountedBenefits: 0,\r\n discountedTotalCost: 0,\r\n economicNetPresentValue: 0,\r\n discountedTravelTimeSavings: 0,\r\n discountedSafetySavings: 0,\r\n discountedVehicleOperatingCostSavings: 0,\r\n discountedEmissionCostSavings: 0,\r\n discountedFreightLogisticsBenefits: 0,\r\n financialNetPresentValue: 0,\r\n totalAutoRevenue: 0,\r\n totalTruckRevenue: 0,\r\n financialIRR: 0,\r\n steiaOutputImpact: 0,\r\n steiaEarningsImpact: 0,\r\n steiaValueAddedImpact: 0,\r\n steiaEmploymentImpact: 0,\r\n lteiaOutputImpact: 0,\r\n lteiaEarningsImpact: 0,\r\n lteiaValueAddedImpact: 0,\r\n lteiaEmploymentImpact: 0,\r\n lteiaDirectOutputImpact: 0\r\n };\r\n action.payload.forEach(project => {\r\n counts.totalRecs++;\r\n //+++++++ Temp overrides\r\n if (project.economicNetPresentValue === 0) project.economicNetPresentValue = project.discountedBenefits - project.discountedTotalCost;\r\n //+++++++\r\n totals.discountedBenefits += project.discountedBenefits;\r\n totals.discountedTotalCost += project.discountedTotalCost;\r\n totals.discountedTravelTimeSavings += project.discountedTravelTimeSavings;\r\n totals.discountedSafetySavings += project.discountedSafetySavings;\r\n totals.discountedVehicleOperatingCostSavings += project.discountedVehicleOperatingCostSavings;\r\n totals.discountedEmissionCostSavings += project.discountedEmissionCostSavings;\r\n totals.discountedFreightLogisticsBenefits += project.discountedFreightLogisticsBenefits;\r\n if (project.improvementType === \"MGLANE\") {\r\n counts.mlRecs++;\r\n totals.financialNetPresentValue += project.financialNetPresentValue;\r\n totals.totalAutoRevenue += project.totalAutoRevenue;\r\n totals.totalTruckRevenue += project.totalTruckRevenue;\r\n totals.financialIRR += project.financialIRR;\r\n } else {\r\n //+++++++ Temp overrides\r\n project.financialIRR = 0;\r\n //+++++++\r\n }\r\n totals.steiaOutputImpact += project.steiaOutputImpact;\r\n totals.steiaEarningsImpact += project.steiaEarningsImpact;\r\n totals.steiaValueAddedImpact += project.steiaValueAddedImpact;\r\n totals.steiaEmploymentImpact += project.steiaEmploymentImpact;\r\n totals.lteiaOutputImpact += project.lteiaOutputImpact;\r\n totals.lteiaEarningsImpact += project.lteiaEarningsImpact;\r\n totals.lteiaValueAddedImpact += project.lteiaValueAddedImpact;\r\n totals.lteiaEmploymentImpact += project.lteiaEmploymentImpact;\r\n totals.lteiaDirectOutputImpact += project.lteiaDirectOutputImpact;\r\n });\r\n totals.benefitCostRatio = totals.discountedBenefits / totals.discountedTotalCost;\r\n totals.economicNetPresentValue = totals.discountedBenefits - totals.discountedTotalCost;\r\n counts.gpRecs = counts.totalRecs - counts.mlRecs;\r\n return {\r\n ...state,\r\n analysisResults: action.payload,\r\n analysisTotals: totals,\r\n analysisCounts: counts,\r\n loadStatus: types.LOADSTATUS.LOADED\r\n };\r\n }\r\n case types.ANALYSIS_RESULTS_ERROR: {\r\n const loadStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Reducer: fetchAnalysisResults.catch-->message=\" + action.payload.message;\r\n return {\r\n ...state,\r\n loadStatus,\r\n loadStatusMessage: msg\r\n }\r\n }\r\n // GP output \r\n case types.GP_OUTPUT_REQUEST:\r\n return {\r\n ...state,\r\n loadStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.GP_OUTPUT_SUCCESS: {\r\n console.log(\"Analysis GP recs =\" + action.payload.length);\r\n let totals = {\r\n discountedBenefits: 0,\r\n discountedTotalCost: 0,\r\n economicNetPresentValue: 0,\r\n discountedTravelTimeSavings: 0,\r\n discountedSafetySavings: 0,\r\n discountedVehicleOperatingCostSavings: 0,\r\n discountedEmissionCostSavings: 0,\r\n discountedFreightLogisticsBenefits: 0\r\n };\r\n action.payload.forEach(project => {\r\n totals.discountedBenefits += project.discountedBenefits;\r\n totals.discountedTotalCost += project.discountedTotalCost;\r\n totals.discountedTravelTimeSavings += project.discountedTravelTimeSavings;\r\n totals.discountedSafetySavings += project.discountedSafetySavings;\r\n totals.discountedVehicleOperatingCostSavings += project.discountedVehicleOperatingCostSavings;\r\n totals.discountedEmissionCostSavings += project.discountedEmissionCostSavings;\r\n totals.discountedFreightLogisticsBenefits += project.discountedFreightLogisticsBenefits;\r\n project.economicNetPresentValue = project.discountedBenefits - project.discountedTotalCost;\r\n });\r\n totals.benefitCostRatio = totals.discountedBenefits / totals.discountedTotalCost;\r\n totals.economicNetPresentValue = (totals.discountedBenefits - totals.discountedTotalCost);\r\n return {\r\n ...state,\r\n projectGpResults: action.payload,\r\n projectGpTotals: totals,\r\n loadStatus: types.LOADSTATUS.LOADED\r\n };\r\n }\r\n case types.GP_OUTPUT_ERROR: {\r\n const loadStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Reducer: fetchGpOutput.catch-->message=\" + action.payload.message;\r\n return {\r\n ...state,\r\n loadStatus,\r\n loadStatusMessage: msg\r\n }\r\n }\r\n // ML output \r\n case types.ML_OUTPUT_REQUEST:\r\n return {\r\n ...state,\r\n loadStatus: types.LOADSTATUS.LOADING\r\n }\r\n case types.ML_OUTPUT_SUCCESS: {\r\n console.log(\"Analysis ML recs =\" + action.payload.length);\r\n let totals = {\r\n discountedBenefits: 0,\r\n discountedTotalCost: 0,\r\n economicNetPresentValue: 0,\r\n discountedTravelTimeSavings: 0,\r\n discountedSafetySavings: 0,\r\n discountedVehicleOperatingCostSavings: 0,\r\n discountedEmissionCostSavings: 0,\r\n discountedFreightLogisticsBenefits: 0,\r\n financialNetPresentValue: 0,\r\n autoTotalRevenue: 0,\r\n truckTotalRevenue: 0,\r\n financialIRR: 0\r\n };\r\n action.payload.forEach(project => {\r\n totals.discountedBenefits += project.discountedBenefits;\r\n totals.discountedTotalCost += project.discountedTotalCost;\r\n //totals.economicNetPresentValue += project.economicNetPresentValue;\r\n totals.discountedTravelTimeSavings += project.discountedTravelTimeSavings;\r\n totals.discountedSafetySavings += project.discountedSafetySavings;\r\n totals.discountedVehicleOperatingCostSavings += project.discountedVehicleOperatingCostSavings;\r\n totals.discountedEmissionCostSavings += project.discountedEmissionCostSavings;\r\n totals.discountedFreightLogisticsBenefits += project.discountedFreightLogisticsBenefits;\r\n totals.financialNetPresentValue += project.financialNetPresentValue;\r\n // totals.autoTotalRevenue += project.autoTotalRevenue;\r\n // totals.truckTotalRevenue += project.truckTotalRevenue;\r\n totals.financialIRR += project.financialIRR;\r\n });\r\n totals.benefitCostRatio = totals.discountedBenefits / totals.discountedTotalCost;\r\n totals.economicNetPresentValue = (totals.discountedBenefits - totals.discountedTotalCost);\r\n return {\r\n ...state,\r\n projectMlResults: action.payload,\r\n projectMlTotals: totals,\r\n loadStatus: types.LOADSTATUS.LOADED\r\n };\r\n }\r\n case types.ML_OUTPUT_ERROR: {\r\n const loadStatus = types.LOADSTATUS.ERROR;\r\n let msg = \"Reducer: fetchMlOutput.catch-->message=\" + action.payload.message;\r\n return {\r\n ...state,\r\n loadStatus,\r\n loadStatusMessage: msg\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import {\r\n combineReducers\r\n } from \"redux\";\r\n import projects from \"./projects\";\r\n \r\n export default combineReducers({\r\n projects\r\n //more stuff will get added here later\r\n });","// export default (state = [], action) => {\r\n// switch (action.type) {\r\n// case \"TEST\":\r\n// return action.payload;\r\n// default:\r\n// return state;\r\n// }\r\n// };\r\nimport { combineReducers } from \"redux\";\r\nimport scenario from \"./scenario\";\r\n\r\nexport default combineReducers({\r\n scenario\r\n});","import { createStore, applyMiddleware } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\n\r\nimport reducer from \"../reducers\";\r\n\r\nconst store = createStore(\r\n reducer,\r\n applyMiddleware(thunk)\r\n);\r\nexport default store;","// Default values\r\nexport const MODEL_PARAMETERS_INFO = { id: 0, isDefault: true, isModified: false, action: \"\", lastSaved: \"\" };\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAACZCAYAAACSao47AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQkRGQjdCOTk0NTgxMUU5QTY2QUI2NDM5OTQ4OUYxNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQkRGQjdCQTk0NTgxMUU5QTY2QUI2NDM5OTQ4OUYxNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjBCREZCN0I3OTQ1ODExRTlBNjZBQjY0Mzk5NDg5RjE2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBCREZCN0I4OTQ1ODExRTlBNjZBQjY0Mzk5NDg5RjE2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+p1ypxAAAErRJREFUeNrsnQ1wVNd1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\""],"sourceRoot":""}