{"version":3,"sources":["../node_modules/@stencil/core/internal/client lazy /^/.*$/ include: /.entry/.js$/ exclude: /.system/.entry/.js$/ groupOptions: {} namespace object","js/components/shared/Spinner.js","js/components/TimeSlider.js","js/config/config.js","js/components/legendOverlay/Overlay.js","js/components/legendOverlay/LegendOverlayContainer.js","js/components/legendOverlay/LOP.js","js/config/DepositionOptions.js","js/config/ExceedanceOptions.js","js/components/Map.js","js/components/dataOptions/MapTypeSelection.js","js/utils/Icons.js","js/components/dataOptions/CriteriaSelection.js","js/components/dataOptions/UnitSelection.js","js/config/CriticalLoadsOptions.js","js/components/dataOptions/CriticalLoads.js","js/components/dataOptions/Deposition.js","js/components/dataOptions/Exceedance.js","js/components/dataOptions/DataOptions.js","images/topo.jpg","images/terrain.jpg","images/dark_gray_canvas.png","images/natgeo.jpg","images/usa_topo.jpg","js/components/header/DisplayMenu.js","images/satellite.jpg","images/hybrid.jpg","images/streets.jpg","images/light_gray_canvas.jpg","images/tempoceans.jpg","images/temposm.jpg","js/components/shared/PrintSpinner.js","images/share.svg","js/constants/actionTypes.js","js/actions/mapActions.js","images/close.svg","images/print.svg","images/download.svg","js/utils/canvas.js","images/map-pin.png","js/reducers/appReducer.js","js/reducers/mapReducers.js","js/store.js","js/utils/middleware.js","js/components/header/MapImageActive.js","js/components/header/MapImageAll.js","images/logo1.png","images/logo2.png","images/logo3.png","js/components/header/SharePrint.js","js/components/header/EpaHeader.js","js/config/DownloadPanelOptions.js","js/components/header/YearSelection.js","js/utils/helper.js","js/components/header/CLDownloadPanel.js","js/components/header/DepDownloadPanel.js","images/downloadDataIcon.svg","js/components/header/DownloadData.js","js/components/header/HelpOverview.js","js/components/header/HelpDisclaimer.js","js/components/header/HelpHowTo.js","js/components/header/HelpDatasets.js","js/components/header/HelpSummaryTables.js","js/components/header/HelpGlossary.js","js/components/header/HelpReferences.js","js/components/header/Help.js","js/components/header/Header.js","js/components/footer/Footer.js","js/components/shared/ReportSpinner.js","js/components/shared/DownloadSpinner.js","js/utils/mapStartUpUtils.js","js/utils/clTableHelper.js","js/components/table/CLTable.js","js/utils/exSevTableHelper.js","js/components/table/ExSevTable.js","js/utils/exTableHelper.js","js/components/table/ExTable.js","js/utils/depTableHelper.js","js/components/table/DepTable.js","js/components/pdf/Cover.js","images/chartLegendMean.png","js/components/chart/HighchartShortTerm.js","js/utils/shortChartHelper.js","js/components/chart/HighchartLongTerm.js","js/utils/longChartHelper.js","js/components/pdf/CLReport.js","js/components/pdf/ExReport.js","images/chartLegendEx.png","js/components/pdf/pdfGenerator.js","js/components/pdf/Disclaimer.js","js/components/pdf/Contents.js","js/components/pdf/DepositionReport.js","js/components/pdf/ExSevReport.js","js/components/popup/ReportPopup.js","js/components/pdf/csvGenerator.js","js/utils/styles.js","js/components/popup/popupTemplate.js","js/utils/IdentifyTask.js","js/utils/MapsController.js","js/components/MapsContainer.js","js/components/App.js","serviceWorker.js","index.js"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","stylesheet","background","position","display","height","width","left","top","spinner","transform","animation","foreground","fill","Spinner","this","props","backgroundColor","active","backgroundStyle","Object","assign","style","dangerouslySetInnerHTML","__html","Component","TimeSlider","interval","paperStyle","updateDimensions","sliderWidth","document","getElementById","index","clientWidth","setState","numberOfMarks","handleDateChange","newYear","changeCallback","manualSliderChange","stopInterval","intervalRunning","toggleInterval","state","startInterval","setInterval","increaseYear","clearInterval","decreaseYear","model","currentYear","min","max","generateMarks","marks","i","y","label","sliderKey","shortid","generate","prevProps","rcp","playbutton","className","Paper","IconButton","aria-label","onClick","defaultValue","onAfterChange","arcgisServiceUrl","initialState","locateModalVisible","shareModalVisible","viewReady","itemInfo","printActiveReady","printAllReady","title","url","reportReady","button","menu","displayOptions","sharePrint","mapOptions","basemap","viewOptions","ui","components","center","zoom","printURL","printServiceUrl","extentSplit","overlayList","reportURLs","dep","chart","table","cl","FederalAdministrativeAreas","ClassIAreas","WildernessAreas","ex","reportDefaults","csvFileNames","Overlay","checkboxStyle","labelStyle","marginLeft","fontSize","handleChange","event","checked","value","parseInt","target","overlay","indexOf","options","filter","v","updateOverlay","setChecked","checkboxList","map","choice","FormControlLabel","toString","control","Checkbox","onChange","disabled","FormControl","withStyles","group","margin","LegendOverlayContainer","visible","content","view","mapType","mapsController","handleSlider","LOP","buttonStyle","handleLegendOverlay","legendActive","overlayActive","setOpacity","console","log","getSpecificMapType","acidification","ecosystem","includes","classes","legendClass","overlayClass","Button","dep_models","sublabel","depType","years","disable","dep_depositionInfo","normalDep","cmipDep","wetDep","dep_rcpInfo","name","ex_models","diable","ex_depositionInfo","ex_rcpInfo","ex_chartInfo","variable","Map","handleYearsUpdate","yearData","forEach","data","updateYear","setTimeSliderYears","needsUpdating","some","key","criticalLoad","deposition","year","unit","updateVisibility","setActiveView","setActiveViewClass","timeSliderYears","_debounce","RadioButtons","resetDataOptions","updateMapTypeSelection","selectedValue","Email","viewBox","d","Facebook","Pinterest","Twitter","SurfaceWater","ForestSoil","EmpiricalNitrogen","LeftArrow","AddData","CriteriaSelection","radioStyle","handleSelection","mainPanelDIV","scrollTop","scrollHeight","menuPrompt","row","toLowerCase","menuItems","selectionOptions","icon","UnitSelection","kgDisabled","updateUnit","criticalLoads","aquatic","category","layer","description","forest","terrestrial","clTotal","CriticalLoads","handleCriticalLoadsSelection","c","updateCriticalLoad","updateAcidification","Deposition","displayName","handleModelSelection","m","updateModel","updateRCP","updateDeposition","Exceedance","exTerrestrialDepType","type","updateEcosystem","DataOptions","toggleView","clearSelection","selectionGroup","color","Drawer","open","onClose","MapTypeSelection","DisplayMenu","setInitialLayout","layout","setLayout","mapViewLayout","activeLayout","updateBaseMap","Menu","anchorEl","handleRequestClose","s","syncLocations","syncDataOptions","Typography","alt","src","Topo","Terrain","DarkGrayCanvas","NationalGeographic","TopoMaps","marginTop","PrintSpinner","VIEW_READY","FETCH_ITEM_INFO","PRINT_ACTIVE","PRINT_ALL","SET_TITLE","TOGGLE_REPORT","TOGGLE_DOWNLOAD","SET_REPORT_STATUS_TEXT","togglePrintActive","togglePrintAll","toggleReportSpinner","setTitle","toggleDownloadSpinner","setReportStatusText","text","getLegendImage","legendContainers","querySelectorAll","legendHidden","getAttribute","length","legendContainer","window","html2canvas","canvas","toDataURL","catch","getTitleImage","titleContainer","childNodes","getTableImage","tableID","tableContainer","loadImage","image","Image","crossOrigin","onload","onerror","getImageURL","reject","substr","xhr","XMLHttpRequest","responseType","img64","input","uInt8Array","Uint8Array","biStr","String","fromCharCode","btoa","join","converterEngine","response","send","getOverlayImages","geometry","resolveCover","rejectCover","centroid","printExecute","formData","FormData","append","JSON","stringify","operationalLayers","opacity","minScale","maxScale","token","visibility","layerType","featureCollection","layers","layerDefinition","geometryType","featureSet","features","symbol","xoffset","yoffset","extent","spatialReference","latestWkid","wkid","xmin","ymin","xmax","ymax","showAttribution","exportOptions","dpi","outputSize","layoutOptions","titleText","authorText","copyrightText","scaleBarOptions","legendOptions","request","parse","results","error","err","combineReducers","action","tempArray","slice","downloadReady","reportStatusText","middleware","api","next","dispatch","store","createStore","appReducer","applyMiddleware","MapImageActive","printImage","my_window","replace","r","Math","random","write","printMapSVG","print","updateCanvas","promises","push","mapImage","legendImage","titleImage","logos","all","logo1Image","logo2Image","logo3Image","imageSize","topMargin","generateScaledSvg","scale","scaledCtx","C2S","drawImage","getSerializedSvg","canvasSource","Blob","canvg","refs","downloadBlob","FileSaver","saveAs","downloadMsBlob","navigator","msSaveBlob","dataURL","closePrintImage","download","href","close","ref","MapImageAll","mapPromises","legendPromises","titlePromises","logoPromises","mapImageUrls","legendImagesUrls","titleImagesUrls","logo","mapImages","legendImages","titleImages","mapDimensions","mapsToPrint","generateSerializedScaledSvg","ctx","strokeStyle","lineWidth","strokeRect","SharePrint","toggleShareURL","shareURL","location","setURL","printImageList","printActive","logo1","logo2","logo3","printAll","printResult","evt","Dialog","share","DialogContent","DialogContentText","TextField","fullWidth","EpaHeader","role","rel","method","htmlFor","placeholder","panelOptions","body","process","tdep","nadp","cmaq","cmip5first","cmip5second","clEx","eco","class1","fedAdmin","wild","exCont_1km","exCont_23km","exContMask_1km","exContMask_23km","exContMask_23kmhsreroc","exContMask_23kmhsrercc","downloadData","indent","readMore","fileName","subText","YearSelection","Select","MenuItem","roundDecimal","number","round","getPercent","areaArr","landcountArr","area","find","landcount","undefined","getDepositionData","depURLs","depositionYear","depositionRange","chartQuery","tableQuery","classification","chartURL","tableURL","fetch","responses","json","kgChartData","feature","attributes","eqChartData","listDepStatistics","chartData","statistic","concat","kgVal","val","kgTableData","eqTableData","tableData","downloadAll","files","file","link","createElement","appendChild","setAttribute","click","removeChild","CLDownloadPanel","handleCLChange","yr","yearSelection","handleRadioChange","depValue","DepDownloadPanel","DownloadData","createList","list","setReadMore","toggleDownloadPanel","downloadDataIcon","toggleReadMore","openReadMore","openclEx","opendep","downloadDataList","DialogTitle","HelpOverview","preventDefault","toggleHowTo","toggleDisclaimer","HelpDisclaimer","HelpHowTo","alert","HelpDatasets","toggleDownloadData","HelpSummaryTables","HelpGlossary","toggleReferences","HelpReferences","Help","toggleOverview","openOverview","openDisclaimer","openHowTo","toggleDatasets","openDatasets","openDownloadData","toggleSummaryTables","openSummaryTables","toggleGlossary","openGlossary","openReferences","Header","openDisplayOptions","opensharePrint","openHelp","toggleDisplayOptions","currentTarget","toggleSharePrint","toggleHelp","Footer","ReportSpinner","aria-labelledby","aria-describedby","CircularProgress","size","getSublayers","sublayers","formatValue","isNaN","setClObject","records","mean","std","percentile5","percentile10","percentile50","setComponent","obj","CLTable","taObj","aaObj","forminObj","formidObj","hpsminObj","hpsmidObj","mfminObj","mfmidObj","hsrptocObj","hsrptccObj","hsrerocObj","hsrerccObj","ta","aa","formin","formid","hpsmin","hpsmid","mfmin","mfmid","hsrptoc","hsrptcc","hsreroc","hsrercc","getClTableData","getExSevTableData","tableNumber","categoryLabels","statistics","result","exSevObj","setExSevObject","ExSevTable","csvDownload","rows","statisticLabel","categoryLabel","rowSpan","colSpan","generateRows","headers","generateHeaders","hist","percentage","setObject","CLCountObj","exObject","Array","isArray","getExTableData","polycountObj","landcountObj","countObj","countPercentObj","countObjs","setCLObjectPercent","tdepObj","cmaqObj","nadpObj","cmip5histObj","cmip5rcp26Obj","cmip5rcp45Obj","cmip5rcp60Obj","cmip5rcp85Obj","polycount","count","countPercent","cmip5hist","cmip5rcp26","cmip5rcp45","cmip5rcp60","cmip5rcp85","ExTable","headerRow","depositionRow","generateDep","setDepObject","percentile95","highlight","DepTable","getDepTableData","createCover","depYears","exYears","doc","line","textOption","createLogo","img","pos","topPos","createText","option","posTop","fillColor","align","font","outline","getPrintCover","rect","fillAndStroke","createUSA","moveTo","lineTo","stroke","agency","Highcharts","require","createHighchartShort","showKG","selectedYear","startYear","subtitle","chartType","extentChart","dataObj","allData","values","kgValues","ceil","floor","kgMax","kgMin","tickInterval","tdepMean","arr","x","sort","a","b","cmaqMean","nadpMean","tdep5","tdep95","cmaq5","cmaq95","nadp5","nadp95","tdepArea","low","high","marker","enabled","cmaqArea","nadpArea","getShortChartData","borderColor","borderWidth","credits","plotOptions","series","pointStart","radius","xAxis","labels","yAxis","gridLineWidth","format","opposite","legend","responsive","rules","condition","maxWidth","chartOptions","verticalAlign","createHighchartLong","getLongChartData","plotLines","zIndex","rotation","dashStyle","createCL","exceedanceRange","exceedanceYear","addPage","header","leftStart","leftEnd","rightStart","rightEnd","tableNotes","createTopLine","createBlock","createWideBlock","createSymbol","createTitle","createWideTitle","createLegend","createShortChart","createLongChart","chartLegendMean","divTable","tableContainerID","ReactDOM","render","exCharts","divShort","divLong","chartContainer","shortID","longID","highchartShort","highchartLong","setSize","shortCanvas","getSVG","exporting","allowHTML","sourceWidth","chartWidth","sourceHeight","chartHeight","shortSRC","longCanvas","longSRC","headerText","createTable","moveDown","innerHTML","createEx","divTable1","tableContainer1","tableContainerID1","tableID1","divTable2","tableContainer2","tableContainerID2","tableID2","exceedance","createPDF","PDFDocument","bufferPages","stream","pipe","blobStream","reportRange","reportYear","time","timeEnd","disclaimer","date","Date","datestring","getMonth","getDate","getFullYear","citationNotes","createDisclaimer","contents","page","subTitle","block","subMenu","clExceedance","clExceedanceExtent","createPage","pageStart","pageEnd","createSubTitle","names","startPoint","columns","createContents","chartShort","chartLong","lineDefault","lineD3","createTableHeader","createLine","chartDataPromises","createDeposition","createTableNotes","createExSev","range","bufferedPageRange","switchToPage","end","on","blob","toBlob","Filesaver","ReportPopup","createReport","noAnimation","screenWidth","innerWidth","querySelector","getBoundingClientRect","right","popupClassList","classList","contains","expandLeft","expandRight","remove","addEventListener","displayReport","generateDownload","clTableUrl","exTableUrl","exChartData","exURLs","eqData","kgData","getExceedanceData","dataPromises","dataArray","res","kgClTableData","eqClTableData","kgExTableData","eqExTableData","exportTableToCSV","tableId","csv","from","rowElem","cols","col","colText","innerText","depVariables","depDataPromises","clTableData","exTableData","exSevTableData","zip","JSZip","csvArr","csvFile","generateAsync","createCSV","finally","updateReportRange","updateReportYear","validateReportYear","handlePopoverOpen","handlePopoverClose","isIe11","MSInputMethodContext","documentMode","sectionTitle","information","area_classification","ie11Offset","defaultStyle","spring","stiffness","damping","interpolation","xPosition","sheet","createTextNode","head","ruleCount","cssRules","deleteRule","addTemporaryGlobalStyles","insertRule","overflowY","listStyleType","selected","marginBottom","Popover","anchorOrigin","vertical","horizontal","transformOrigin","makePopup","popupNode","agencyCode","Agency","TYPE","NAME","Name","PROFILE","Shape_Area_HA","toLocaleString","Land_Unit_Name","Total_Area","Area_Classification","executeIdentifyTask","filteredLayer","swLayer","herbsrLayer","identifyTasks","imageServiceIdentifyTasks","allIdentifyTasks","mapview","graphics","items","identifyTask","IdentifyTask","params","IdentifyParameters","sublayer","layerIds","tolerance","layerOption","mapPoint","mapExtent","returnGeometry","geometryPrecision","execute","imageServiceIdentifyTask","ImageIdentifyTask","ImageIdentifyParameters","item","definitionExpression","mosaicRule","where","renderingRule","identifyTasksPromise","layerName","renderer","field","graphic","Graphic","popupTemplate","expressionInfos","expression","canopyType","getPopupTemplate","polygon","Polygon","rings","fillSymbol","SimpleFillSymbol","imageIdentifyTasksPromise","properties","Values","charAt","toUpperCase","functionName","popup","MapsController","maps","mapViews","overlayLayer","findLayerById","processOverlays","processCriticalLoads","processDeposition","processExceedance","processSWExceedance","processHerbSRExceedance","layerValue","layerTitle","getLayerID","criticalLoadsIndex","findIndex","load","clObj","rastFunc","RasterFunction","modelIndex","queryString","prefix","yearRange","depIndex","depLabel","rcpIndex","altUnit","acidIndex","acid","ecoIndex","ecoLabel","ecoSubLabel","search","swExceedance","getSWLayerID","generateExceedanceRenderer","herbSRExceedance","getHerbSRLayerID","syncData","maxIndex","generateSymbol","SimpleMarkerSymbol","ClassBreaksRenderer","classBreakInfos","minValue","maxValue","printTask","PrintTask","template","PrintTemplate","PrintParameters","printAllPromises","latitude","longitude","EsriMap","MapView","container","when","critLayer","MapImageLayer","depLayer","ImageryLayer","exLayer","herbSRLayer","overlays","addMany","addLayers","Legend","addLegend","stopPropagation","zoomWidget","Zoom","add","viewCreated","goTo","closeNode","getElementsByClassName","watch","newValue","oldValue","property","setTimeout","MapsContainer","newAcidification","newEcosystem","newCriticalLoad","newDeposition","newModel","newDepType","newRCP","newUnit","tempParentArray","tempCellArray","overlayIndex","splice","updateTitle","newTitle","activeView","newState","dupArray","_fill","hash","basemapArray","parseLink","split","parseData","DownloadSpinner","App","storeDidUpdate","getState","unsubscribe","subscribe","Boolean","hostname","match","serviceWorker","ready","registration","unregister"],"mappings":"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,KAAMpP,KAAKC,MAAMmP,KAAMC,QAASrP,KAAKC,MAAMoP,QAAnD,UACC,eAACoU,GAAA,EAAD,iCAEC,uBACA,mBAAGvgB,UAAU,mBAAb,+BACA,oBAAIA,UAAU,0BAEf,eAACoa,GAAA,EAAD,CAAepa,UAAU,iBAAzB,UACC,+LAGuB,IACtB,mBACC+X,KAAK,KACL3X,QAAS,SAAC3E,GACTA,EAAEglB,iBACF,EAAK1jB,MAAMokB,oBAJb,wBAJD,OAcA,8BACC,oEADD,kGAKA,8BACC,oCADD,gDAGA,8BACC,qCADD,0HAIA,8BACC,6CADD,kkBAYA,8BACC,8CADD,uDAIA,8BACC,qCADD,seAUA,8BACC,sCADD,uQAOA,8BACC,mDADD,iPAMA,8BACC,2CADD,0LAKA,8BACC,iDADD,gDAGA,8BACC,0CADD,2YASA,8BACC,wDADD,qLAMA,8BACC,oCADD,uDAGA,8BACC,mCADD,+BAGA,8BACC,2CADD,8OAMA,8BACC,4DADD,61BAgBA,8BACC,mEADD,wFAIA,8BACC,oCADD,iDAGA,8BACC,mCADD,gCAGA,8BACC,qCADD,iFAIA,8BACC,kCADD,kBAGA,8BACC,qCADD,2MAMA,8BACC,qCADD,8LAKA,8BACC,oCADD,6CAGA,8BACC,4CADD,2GAIA,8BACC,wCADD,sFAIA,8BACC,sDADD,iEAIA,8BACC,uEADD,oHAKA,8BACC,kEADD,mGAKA,8BACC,oCADD,2OAMA,8BACC,qDADD,gEAIA,8BACC,kCADD,gBAGA,8BACC,gEADD,0HAKA,8BACC,qCADD,2NAMA,8BACC,mDADD,wDAIA,8BACC,qDADD,mEAIA,8BACC,mDADD,sDAIA,8BACC,qCADD,uEAIA,8BACC,2DADD,mEAIA,8BACC,6DADD,kFAIA,8BACC,iDADD,gDAGA,8BACC,oEADD,6EAIA,8BACC,mEADD,4EAIA,8BACC,iDADD,8CAGA,8BACC,gDADD,kL,GAvPsB3jB,aC0cZ4jB,G,kDAxcd,WAAYrkB,GAAQ,uCACbA,G,0CAGP,WACC,OACC,eAACmd,GAAA,EAAD,CAAQhO,KAAMpP,KAAKC,MAAMmP,KAAMC,QAAS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","file":"static/js/main.85f4f0e3.chunk.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 769;","import React, {Component} from 'react';\r\n\r\nconst stylesheet = {\r\n background: {\r\n position: 'absolute',\r\n display: 'none',\r\n height: '100%',\r\n width: '100%',\r\n left: 0,\r\n top: 0\r\n },\r\n spinner: {\r\n transform: 'translate(-50%, -50%)',\r\n position: 'absolute',\r\n height: '50px',\r\n width: '50px',\r\n left: '50%',\r\n top: '50%'\r\n },\r\n animation: 'animation: spinner 0.95s cubic-bezier(0.645, 0.045, 0.355, 1.000) infinite',\r\n foreground: { fill: '#FFFFFF' }\r\n};\r\n\r\nexport default class Spinner extends Component {\r\n displayName: 'Spinner';\r\n\r\n render () {\r\n const {backgroundColor, active, fill} = this.props;\r\n let backgroundStyle = Object.assign({}, stylesheet.background);\r\n // Set background if passed in\r\n if (backgroundColor) { backgroundStyle.background = backgroundColor; }\r\n // Show the spinner if it is active\r\n backgroundStyle.display = active ? 'block' : 'none';\r\n // Construct the foreground styles\r\n let foreground = `${!active ? '' : stylesheet.animation};`;\r\n foreground += `fill: ${fill || stylesheet.foreground.fill};`;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n `\r\n }} />\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, {Component} from 'react';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport PlayArrow from '@material-ui/icons/PlayArrow';\r\nimport PauseCircleFilled from '@material-ui/icons/PauseCircleFilled';\r\nimport SkipNext from '@material-ui/icons/SkipNext';\r\nimport SkipPrevious from '@material-ui/icons/SkipPrevious';\r\n\r\nimport Slider from 'rc-slider';\r\nimport 'rc-slider/assets/index.css';\r\n\r\nimport shortid from 'shortid';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nexport default class TimeSlider extends Component {\r\n\r\n interval = null;\r\n\r\n paperStyle = {\r\n 'display': 'flex',\r\n 'flexDirection': 'flex-row'\r\n }\r\n\r\n constructor (props) {\r\n super(props);\r\n this.state = {\r\n intervalRunning: false,\r\n numberOfMarks: 10,\r\n sliderKey: shortid.generate()\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // window.addEventListener('resize', this.updateDimensions);\r\n }\r\n\r\n componentDidUpdate (prevProps) {\r\n if (prevProps.model !== this.props.model || prevProps.rcp !== this.props.rcp || prevProps.currentYear !== this.props.currentYear){\r\n this.setState({\r\n sliderKey: shortid.generate()\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount () {\r\n this.stopInterval();\r\n //todo remove event listener\r\n }\r\n\r\n updateDimensions = () => {\r\n const sliderWidth = document.getElementById(`time-slider-${this.props.index}`).clientWidth - 500;\r\n this.setState({numberOfMarks: sliderWidth / 50});\r\n }\r\n\r\n handleDateChange = (newYear) => {\r\n this.props.changeCallback(newYear, this.props.index);\r\n }\r\n\r\n manualSliderChange = (newYear) => {\r\n\t\tthis.stopInterval();\r\n\t\tthis.setState({\r\n\t\t\tintervalRunning: false,\r\n\t\t});\r\n this.handleDateChange(newYear);\r\n\t}\r\n\r\n toggleInterval = () => {\r\n if (this.state.intervalRunning) {\r\n this.stopInterval();\r\n this.setState({ intervalRunning: false });\r\n } else {\r\n this.startInterval();\r\n this.setState({ intervalRunning: true });\r\n }\r\n }\r\n\r\n startInterval = () => {\r\n const intervalLength = 2000;\r\n this.interval = setInterval(() => {\r\n this.increaseYear();\r\n }, intervalLength);\r\n }\r\n\r\n stopInterval = () => {\r\n clearInterval(this.interval);\r\n }\r\n\r\n decreaseYear = () => {\r\n let interval = 1;\r\n if (this.props.model === \"tdep\") {\r\n\t\t\tinterval = 2;\r\n\t\t} else if (this.props.model === \"cmip5\") {\r\n\t\t\tinterval = 10;\r\n\t\t}\r\n const newYear =\r\n\t\t\tthis.props.currentYear - interval < this.props.min\r\n\t\t\t\t? this.props.max\r\n\t\t\t\t: this.props.currentYear - interval;\r\n this.handleDateChange(newYear);\r\n }\r\n\r\n increaseYear = () => {\r\n let interval = 1;\r\n /* if (this.props.model === \"tdep\") {\r\n\t\t\tinterval = 2;\r\n } else */\r\n if (this.props.model === \"cmip5\") {\r\n\t\t\tinterval = 10;\r\n\t\t}\r\n const newYear =\r\n\t\t\tthis.props.currentYear + interval > this.props.max\r\n\t\t\t\t? this.props.min\r\n\t\t\t\t: this.props.currentYear + interval;\r\n this.handleDateChange(newYear);\r\n }\r\n\r\n generateMarks = () => {\r\n const marks = {};\r\n let interval = 1;\r\n if (this.props.model === \"cmip5\") {\r\n\t\t\tinterval = 10;\r\n\t\t}\r\n const numberOfMarks = ((this.props.max - this.props.min) / interval) + 1;\r\n // let index = 0;\r\n for (let i = 0; i < numberOfMarks; i++) {\r\n const y = this.props.min + (i * interval);\r\n marks[y] = {};\r\n\t\t\tif (y === this.props.currentYear) {\r\n\t\t\t\tmarks[y].label = {y};\r\n }\r\n else {\r\n marks[y].label = y;\r\n }\r\n // index++;\r\n\t\t}\r\n return marks;\r\n }\r\n\r\n render () {\r\n\r\n const { index, min, currentYear, max } = this.props;\r\n const playbutton = this.state.intervalRunning ? : ;\r\n return (\r\n
\r\n \r\n \r\n {playbutton}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n","import mapPin from \"images/map-pin.png\";\r\n\r\n//Base url for arcgis services\r\n/* const arcgisServiceUrl = \"https://gis.rti.org/server/rest/services/Deposition\"; // RTI Dev\r\nconst printServiceUrl = \"https://gis.rti.org/server/rest/services/Utilities\"; // RTI Dev */\r\n\r\n/* const arcgisServiceUrl = 'https://geospatial.rti.org/server/rest/services/Deposition'; // RTI Staging\r\nconst printServiceUrl = 'https://geospatial.rti.org/server/rest/services/Utilities'; // RTI Staging */\r\n\r\n/* const arcgisServiceUrl = 'https://v18ovhrtay715.aa.ad.epa.gov/arcgis/rest/services/Deposition'; // EPA Staging (brewer)\r\nconst printServiceUrl = 'https://v18ovhrtay715.aa.ad.epa.gov/arcgis/rest/services/Utilities'; // EPA Staging (brewer) */\r\n\r\n/* const arcgisServiceUrl = 'https://clmapper.epa.gov/arcgis/rest/services/Deposition'; // EPA Prod (largo)\r\nconst printServiceUrl = 'https://clmapper.epa.gov/arcgis/rest/services/Utilities'; // EPA Prod (largo) */\r\n\r\nconst arcgisServiceUrl = 'https://epamap36.epa.gov/arcgis/rest/services/Deposition'; // EPA Prod (clmapper)\r\nconst printServiceUrl = 'https://epamap36.epa.gov/arcgis/rest/services/Utilities'; // EPA Prod (clmapper)\r\nconst initialState = {\r\n\tlocateModalVisible: false,\r\n\tshareModalVisible: false,\r\n\tviewReady: [false, false, false, false],\r\n\titemInfo: {},\r\n\tprintActiveReady: false,\r\n\tprintAllReady: false,\r\n\ttitle: \"\",\r\n\turl: \"https://clmapper.epa.gov\",\r\n\treportReady: false,\r\n};\r\n\r\nconst button = {\r\n\tlegend: \"Legend\",\r\n\toverlay: \"Overlay\",\r\n};\r\n\r\nconst menu = {\r\n\tdisplayOptions: \"display options\",\r\n\tsharePrint: \"share\",\r\n\tdownload: \"download data\",\r\n\thelp: \"help\",\r\n\tenvironmental: {\r\n\t\ttext: \"environmental topics\",\r\n\t\ttitle: \"Learn about Environmental Topics that EPA covers.\",\r\n\t\thref: \"https://www.epa.gov/environmental-topics\",\r\n\t},\r\n\tlaws: {\r\n\t\ttext: \"laws & regulations\",\r\n\t\ttitle:\r\n\t\t\t\"Laws written by Congress provide the authority for EPA to write regulations. Regulations explain the technical, operational, and legal details necessary to implement laws.\",\r\n\t\thref: \"https://www.epa.gov/laws-regulations\",\r\n\t},\r\n\tabout: {\r\n\t\ttext: \"about EPA\",\r\n\t\ttitle:\r\n\t\t\t\"Learn more about: our mission and what we do, how we are organized, and our history.\",\r\n\t\thref: \"https://www.epa.gov/aboutepa\",\r\n\t},\r\n\tcontact: \"contact cl mapper\",\r\n\tshare: \"share\",\r\n\tglobal: \"global change explorer\",\r\n\tmapper: \"critical loads mapper\",\r\n};\r\n\r\nconst displayOptions = {\r\n\tsyncLocations: \"Sync Locations\",\r\n\tsyncData: \"Sync Data\",\r\n\tbasemaps: \"Basemaps\",\r\n};\r\n\r\nconst sharePrint = {\r\n\tshare: \"Share This Page\",\r\n\tprintAll: \"Print All Maps\",\r\n\tprintActive: \"Print Active Map\",\r\n};\r\n\r\nconst mapOptions = {\r\n\tbasemap: \"dark-gray-vector\",\r\n};\r\n\r\nconst viewOptions = {\r\n\tui: { components: [\"logo\", \"attribution\"] },\r\n\tcenter: [-98.35, 37.5],\r\n\tzoom: 4,\r\n};\r\n\r\nconst addData = \"ADD DATA\";\r\n\r\nconst urls = {\r\n\titemInfo: function (appid) {\r\n\t\treturn \"//www.arcgis.com/sharing/rest/content/items/\" + appid + \"/data\";\r\n\t},\r\n};\r\n\r\nconst printURL =\r\n\tprintServiceUrl + \"/PrintingTools/GPServer/Export%20Web%20Map%20Task\";\r\n\r\nconst extentSplit = \",extent:\";\r\nconst hrefSplit = \"#\";\r\n\r\n//Note line 68 of mapStartUpUtils.js needs to have the highest layer id of the overlays\r\nconst overlayList = [\r\n\t{\r\n\t\tid: [0, 12],\r\n\t\tlabel: \"Level 1 Ecoregions\",\r\n\t},\r\n\t{\r\n\t\tid: [1, 13],\r\n\t\tlabel: \"Level 2 Ecoregions\",\r\n\t},\r\n\t{\r\n\t\tid: [2, 14],\r\n\t\tlabel: \"Level 3 Ecoregions\",\r\n\t},\r\n\t{\r\n\t\tid: [3, 11],\r\n\t\tlabel: \"Class I Areas\",\r\n\t},\r\n\t{\r\n\t\tid: [7, 10],\r\n\t\tlabel: \"Federal Administrative Areas\",\r\n\t},\r\n\t{\r\n\t\tid: [9, 16],\r\n\t\tlabel: \"BIA Land Area Representations\",\r\n\t},\r\n\t{\r\n\t\tid: [8, 15],\r\n\t\tlabel: \"Wilderness Areas\",\r\n\t},\r\n\t{\r\n\t\tid: [30],\r\n\t\tlabel: \"States\",\r\n\t},\r\n\t{\r\n\t\tid: [6, 19],\r\n\t\tlabel: \"Counties\",\r\n\t},\r\n];\r\n\r\n//*** no longer used *** */\r\nconst shareURL = {\r\n\tbitly:\r\n\t\t\"https://api-ssl.bitly.com/v3/shorten?apiKey=R_cd84fb9dde924ad9bd1594f03fb10c7d&login=aramsdell&longUrl=\",\r\n\t//*** this service has been discontinued ***\r\n\tgov: \"https://go.usa.gov/api/shorten.json?login=pmorefi&apiKey=a439f79cc933409a97265b953a747710&longUrl=\",\r\n\talpha: \"https://geospatial.rti.org/clmapper/\",\r\n};\r\n//********************** */\r\n\r\nconst legendURL = {\r\n\tcriticalLoads: arcgisServiceUrl + \"/CriticalLoads/MapServer/legend?f=json\",\r\n\tdeposition: arcgisServiceUrl + \"/DepositionModels/ImageServer/legend?f=json\",\r\n\texceedance: arcgisServiceUrl + \"/ExceedanceModels/ImageServer/legend?f=json\",\r\n\tswExceedance: arcgisServiceUrl + \"/SWExceedance/MapServer/legend?f=json\",\r\n\toverlays: arcgisServiceUrl + \"/Overlays/MapServer/legend?f=json\",\r\n};\r\n\r\n//Update this for un-pivoted profile tables\r\nconst reportURLs = {\r\n\tdep: {\r\n\t\tchart:\r\n\t\t\t\"/query?where=profile%3D%27{NAME}%27+AND+variable%3D%27{VARIABLE}%27&outFields=*&f=json\",\r\n\t\ttable:\r\n\t\t\t\"/query?where=profile%3D%27{NAME}%27+AND+variable%3D%27{VARIABLE}%27+AND+year%3D{YEAR}&outFields=*&f=json\",\r\n\t\t\"ClassIAreas-3\": arcgisServiceUrl + \"/ProfileTables_Dep/MapServer/5\",\r\n\t\t\"ClassIAreas-10\": arcgisServiceUrl + \"/ProfileTables_Dep/MapServer/11\",\r\n\t\t\"WildernessAreas-3\": arcgisServiceUrl + \"/ProfileTables_Dep/MapServer/7\",\r\n\t\t\"WildernessAreas-10\": arcgisServiceUrl + \"/ProfileTables_Dep/MapServer/12\",\r\n\t\t\"FederalAdministrativeAreas-3\":\r\n\t\t\tarcgisServiceUrl + \"/ProfileTables_Dep/MapServer/9\",\r\n\t\t\"FederalAdministrativeAreas-10\":\r\n\t\t\tarcgisServiceUrl + \"/ProfileTables_Dep/MapServer/10\",\r\n\t},\r\n\tcl: {\r\n\t\ttable: \"/query?where=profile%3D%27{NAME}%27&outFields=*&f=json\",\r\n\t\tFederalAdministrativeAreas:\r\n\t\t\tarcgisServiceUrl + \"/ProfileTables_CL/MapServer/16\",\r\n\t\tClassIAreas: arcgisServiceUrl + \"/ProfileTables_CL/MapServer/17\",\r\n\t\tWildernessAreas: arcgisServiceUrl + \"/ProfileTables_CL/MapServer/18\",\r\n\t},\r\n\tex: {\r\n\t\tchart:\r\n\t\t\t\"/query?where=profile%3D%27{NAME}%27+AND+ex%3D%27{EX}%27+AND+variable%3D%27{VARIABLE}%27&outFields=*&f=json\",\r\n\t\ttable:\r\n\t\t\t\"/query?where=profile%3D%27{NAME}%27+AND+year%3D{YEAR}&outFields=*&f=json\",\r\n\t\t\"ClassIAreas-3\": arcgisServiceUrl + \"/ProfileTables_Ex/MapServer/11\",\r\n\t\t\"ClassIAreas-10\": arcgisServiceUrl + \"/ProfileTables_Ex/MapServer/17\",\r\n\t\t\"WildernessAreas-3\": arcgisServiceUrl + \"/ProfileTables_Ex/MapServer/15\",\r\n\t\t\"WildernessAreas-10\": arcgisServiceUrl + \"/ProfileTables_Ex/MapServer/18\",\r\n\t\t\"FederalAdministrativeAreas-3\":\r\n\t\t\tarcgisServiceUrl + \"/ProfileTables_Ex/MapServer/13\",\r\n\t\t\"FederalAdministrativeAreas-10\":\r\n\t\t\tarcgisServiceUrl + \"/ProfileTables_Ex/MapServer/16\",\r\n\t},\r\n};\r\n\r\nconst reportDefaults = {\r\n\tpageMargin: 15,\r\n};\r\n\r\nconst popupInfo =\r\n\t\"The 3-Year Average data averages results across years to reduce the variability inherent between individual years (e.g., a year with high precipitation can result in higher levels of deposition and CL exceedance). The 3-Year Average data can minimize extremes in a given time period, and is generally recommended if a user is interested in determining current levels of deposition or CL exceedance.\";\r\n\r\nconst noData = \"Data not available\";\r\n\r\nconst getPrintCover = function (geometry) {\r\n\treturn {\r\n\t\toperationalLayers: [\r\n\t\t\t{\r\n\t\t\t\tid: \"satellite-base-layer\",\r\n\t\t\t\ttitle: \"World Imagery\",\r\n\t\t\t\topacity: 1,\r\n\t\t\t\tminScale: 0,\r\n\t\t\t\tmaxScale: 0,\r\n\t\t\t\turl: \"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer\",\r\n\t\t\t\ttoken: null,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfeatureCollection: {\r\n\t\t\t\t\tlayers: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlayerDefinition: {\r\n\t\t\t\t\t\t\t\tname: \"polylgonLayer\",\r\n\t\t\t\t\t\t\t\tgeometryType: \"esriGeometryPolygon\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfeatureSet: {\r\n\t\t\t\t\t\t\t\tgeometryType: \"esriGeometryPolygon\",\r\n\t\t\t\t\t\t\t\tfeatures: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tgeometry: geometry,\r\n\t\t\t\t\t\t\t\t\t\tsymbol: {\r\n\t\t\t\t\t\t\t\t\t\t\ttype: \"esriSFS\",\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: [255, 255, 255, 100],\r\n\t\t\t\t\t\t\t\t\t\t\toutline: {\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"esriSLS\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: [255, 255, 255, 255],\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle: \"esriSLSSolid\",\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\tstyle: \"esriSFSDiagonalCross\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t\tmapOptions: {\r\n\t\t\t// extent: geometry.extent,\r\n\t\t\textent: {\r\n\t\t\t\txmin: geometry.extent.xmin - 10000,\r\n\t\t\t\tymin: geometry.extent.ymin - 10000,\r\n\t\t\t\txmax: geometry.extent.xmax + 10000,\r\n\t\t\t\tymax: geometry.extent.ymax + 10000,\r\n\t\t\t\tspatialReference: geometry.extent.spatialReference,\r\n\t\t\t},\r\n\t\t\tspatialReference: geometry.spatialReference,\r\n\t\t\tshowAttribution: false,\r\n\t\t},\r\n\t\texportOptions: {\r\n\t\t\tdpi: 96,\r\n\t\t\toutputSize: [650, 600],\r\n\t\t},\r\n\t\tlayoutOptions: {\r\n\t\t\ttitleText: \"\",\r\n\t\t\tauthorText: \"\",\r\n\t\t\tcopyrightText: \"\",\r\n\t\t\tscaleBarOptions: {},\r\n\t\t\tlegendOptions: {\r\n\t\t\t\toperationalLayers: [],\r\n\t\t\t},\r\n\t\t},\r\n\t};\r\n};\r\n\r\nconst getPrintOverlay = function (centroid) {\r\n\treturn {\r\n\t\toperationalLayers: [\r\n\t\t\t{\r\n\t\t\t\tid: \"satellite-base-layer\",\r\n\t\t\t\ttitle: \"World Imagery\",\r\n\t\t\t\topacity: 0.7,\r\n\t\t\t\tminScale: 0,\r\n\t\t\t\tmaxScale: 0,\r\n\t\t\t\turl: \"https://arcgisproxy01.imsweb.com/arcgis/rest/services/BaseMap/Slate_Albers/MapServer\",\r\n\t\t\t\ttoken: null,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"160c2cec806-layer-0\",\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ttitle: \"Overlays - States_500kres\",\r\n\t\t\t\turl: arcgisServiceUrl + \"/Overlays/MapServer/30\",\r\n\t\t\t\tvisibility: true,\r\n\t\t\t\tlayerType: \"ArcGISFeatureLayer\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfeatureCollection: {\r\n\t\t\t\t\tlayers: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlayerDefinition: {\r\n\t\t\t\t\t\t\t\tname: \"pointLayer\",\r\n\t\t\t\t\t\t\t\tgeometryType: \"esriGeometryPoint\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfeatureSet: {\r\n\t\t\t\t\t\t\t\tgeometryType: \"esriGeometryPoint\",\r\n\t\t\t\t\t\t\t\tfeatures: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tgeometry: centroid,\r\n\t\t\t\t\t\t\t\t\t\tsymbol: {\r\n\t\t\t\t\t\t\t\t\t\t\ttype: \"esriPMS\",\r\n\t\t\t\t\t\t\t\t\t\t\txoffset: 0,\r\n\t\t\t\t\t\t\t\t\t\t\tyoffset: 5,\r\n\t\t\t\t\t\t\t\t\t\t\turl: mapPin,\r\n\t\t\t\t\t\t\t\t\t\t\theight: 35,\r\n\t\t\t\t\t\t\t\t\t\t\twidth: 45,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t\tmapOptions: {\r\n\t\t\textent: {\r\n\t\t\t\tspatialReference: {\r\n\t\t\t\t\tlatestWkid: 102039,\r\n\t\t\t\t\twkid: 102039,\r\n\t\t\t\t},\r\n\t\t\t\txmin: -2442062.0199379725,\r\n\t\t\t\tymin: 1237484.9409761971,\r\n\t\t\t\txmax: 2394530.9865813768,\r\n\t\t\t\tymax: 2269810.392161941,\r\n\t\t\t\t// xmin: -14118224.87238148,\r\n\t\t\t\t// ymin: 2389073.6018696,\r\n\t\t\t\t// xmax: -7264575.168221261,\r\n\t\t\t\t// ymax: 6870117.9480586\r\n\t\t\t},\r\n\t\t\tspatialReference: {\r\n\t\t\t\tlatestWkid: 102039,\r\n\t\t\t\twkid: 102039,\r\n\t\t\t},\r\n\t\t\tshowAttribution: false,\r\n\t\t},\r\n\t\texportOptions: {\r\n\t\t\tdpi: 96,\r\n\t\t\toutputSize: [500, 500],\r\n\t\t},\r\n\t\tlayoutOptions: {\r\n\t\t\ttitleText: \"\",\r\n\t\t\tauthorText: \"\",\r\n\t\t\tcopyrightText: \"\",\r\n\t\t\tscaleBarOptions: {},\r\n\t\t\tlegendOptions: {\r\n\t\t\t\toperationalLayers: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"160c2cec806-layer-0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t},\r\n\t};\r\n};\r\n\r\nconst csvFileNames = [\r\n\t\"Nitrogen(N) Deposition({depYears})\",\r\n\t\"Sulfur(S) Deposition({depYears})\",\r\n\t\"Nitrogen+Sulfur(N+S) Total Deposition({depYears})\",\r\n\t\"Critical Loads(CL)\",\r\n\t\"CL Exceedance Extent({exYears})\",\r\n\t\"CL Exceedance Severity({exYears})\",\r\n];\r\n\r\nexport {\r\n\tinitialState,\r\n\tbutton,\r\n\tmenu,\r\n\tdisplayOptions,\r\n\tmapOptions,\r\n\tviewOptions,\r\n\turls,\r\n\tsharePrint,\r\n\tprintURL,\r\n\taddData,\r\n\textentSplit,\r\n\threfSplit,\r\n\toverlayList,\r\n\tshareURL,\r\n\tlegendURL,\r\n\tpopupInfo,\r\n\treportURLs,\r\n\treportDefaults,\r\n\tnoData,\r\n\tgetPrintCover,\r\n\tgetPrintOverlay,\r\n\tcsvFileNames,\r\n\tarcgisServiceUrl,\r\n};\r\n","import React, { Component } from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport {overlayList} from 'js/config/config';\r\n\r\nconst styleSheet = {\r\n group: {\r\n margin: '5px 0'\r\n }\r\n};\r\n\r\nclass Overlay extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\tcheckboxStyle = {\r\n\t\theight: \"25px\",\r\n\t\twidth: \"25px\",\r\n\t};\r\n\r\n\tlabelStyle = {\r\n\t\tmarginLeft: 0,\r\n\t\tfontSize: \"12px\",\r\n\t};\r\n\r\n\thandleChange = (event, checked) => {\r\n\t\tconst value = parseInt(event.target.value);\r\n\t\tconst index = this.props.overlay.indexOf(value);\r\n\t\tconst options = overlayList.filter((v) => v.id[0] === value)[0].id;\r\n\t\t//console.log(options);\r\n\t\t//console.log('props.overlay:');\r\n\t\t//console.log(this.props.overlay);\r\n\t\t//console.log('this.props.index:');\r\n\t\t//console.log(this.props.index);\r\n\t\tif (index === -1 && checked) {\r\n\t\t\tthis.props.updateOverlay(options, this.props.index, \"push\");\r\n\t\t} else if (index > -1 && !checked) {\r\n\t\t\tthis.props.updateOverlay(options, this.props.index, \"pull\");\r\n\t\t}\r\n\t};\r\n\r\n\tsetChecked = (value) => {\r\n\t\treturn this.props.overlay.indexOf(value) > -1;\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst checkboxList = overlayList.map((choice) => {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlabel={choice.label}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{checkboxList}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default withStyles(styleSheet)(Overlay);\r\n","import React, { Component } from 'react';\r\nimport Overlay from 'js/components/legendOverlay/Overlay';\r\n// TODO: delete if not needed\r\n// import Legend from 'js/components/legendOverlay/Legend';\r\nimport Slider from 'rc-slider';\r\nimport 'rc-slider/assets/index.css';\r\n\r\nexport default class LegendOverlayContainer extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\t\r\n\trender() {\r\n\t\tconst visible =\r\n\t\t\tthis.props.content === \"legend\" ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t// TODO: delete if not needed\r\n\t\t// const visible = this.props.content === 'legend' ? : ;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
Transparency
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t0%\r\n\t\t\t\t\t\t100%\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t{visible}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { button } from 'js/config/config';\r\nimport LegendOverlayContainer from 'js/components/legendOverlay/LegendOverlayContainer';\r\n\r\nconst styleSheet = {\r\n button: {\r\n margin: '5px 0'\r\n }\r\n};\r\n\r\nclass LOP extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n legendActive: true,\r\n overlayActive: false\r\n };\r\n }\r\n\r\n paperStyle = {\r\n 'height': '100%'\r\n };\r\n\r\n buttonStyle = {\r\n 'width': '150px'\r\n }\r\n\r\n handleLegendOverlay = (value) => {\r\n if (value === 'legend') {\r\n if (!this.state.legendActive && this.state.overlayActive) {\r\n this.setState({\r\n legendActive: true,\r\n overlayActive: false\r\n });\r\n } else {\r\n this.setState({\r\n legendActive: !this.state.legendActive\r\n });\r\n }\r\n } else {\r\n if (!this.state.overlayActive && this.state.legendActive) {\r\n this.setState({\r\n legendActive: false,\r\n overlayActive: true\r\n });\r\n } else {\r\n this.setState({\r\n overlayActive: !this.state.overlayActive\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleSlider = (value) => {\r\n if (this.state.legendActive && this.props.mapType) {\r\n this.props.mapsController.setOpacity(1 - (value / 100), this.props.view, this.props.mapType);\r\n }\r\n console.log(this.state.overlayActive)\r\n if (this.state.overlayActive) {\r\n this.props.mapsController.setOpacity(1 - (value / 100), this.props.view, 'overlays');\r\n }\r\n }\r\n\r\n getSpecificMapType = (mapType, acidification, ecosystem) => {\r\n if (mapType === \"exceedance\" && acidification === \"aquatic\") {\r\n\t\t\tmapType += \"-sw\";\r\n\t\t} else if (\r\n\t\t\tmapType === \"exceedance\" &&\r\n\t\t\tacidification === \"terrestrial\" &&\r\n ecosystem &&\r\n\t\t\tecosystem.includes(\"hsrpt\")\r\n\t\t) {\r\n\t\t\tmapType += \"-herbsr\";\r\n }\r\n return mapType;\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const legendClass = `${classes.button} white-text-button lop-button ${this.state.legendActive ? 'selected' : ''}`;\r\n const overlayClass = `${classes.button} white-text-button lop-button ${this.state.overlayActive ? 'selected' : ''}`;\r\n return (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t this.handleLegendOverlay(\"legend\")}\r\n\t\t\t\t\t\t\tstyle={this.buttonStyle}>\r\n\t\t\t\t\t\t\t{button.legend}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.handleLegendOverlay(\"overlay\")}\r\n\t\t\t\t\t\t\tstyle={this.buttonStyle}>\r\n\t\t\t\t\t\t\t{button.overlay}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n }\r\n}\r\n\r\nexport default withStyles(styleSheet)(LOP);\r\n","const dep_models = [\r\n\t{\r\n\t\tlabel: \"Total Deposition Project\",\r\n\t\tsublabel: \"(TDEP, 2002-2018)\",\r\n\t\tvalue: \"tdep\",\r\n\t\tdepType: \"normalDep\",\r\n\t\tyears: {\r\n\t\t\tmin: 2002,\r\n\t\t\tmax: 2018,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t\tmodel: \"TDEP\",\r\n\t},\r\n\t{\r\n\t\tlabel: \"Community Multi-Scale Air Quality\",\r\n\t\tsublabel: \"(CMAQ, 2004-2011)\",\r\n\t\tvalue: \"cmaq\",\r\n\t\tdepType: \"normalDep\",\r\n\t\tyears: {\r\n\t\t\tmin: 2004,\r\n\t\t\tmax: 2011,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t\tmodel: \"CMAQ\",\r\n\t},\r\n\t/* {\r\n\t\tlabel: \"National Atmospheric Deposition Program\",\r\n\t\tsublabel: \"(NADP, 1985-2013)\",\r\n\t\tvalue: \"nadp\",\r\n\t\tdepType: \"wetDep\",\r\n\t\tyears: {\r\n\t\t\tmin: 1985,\r\n\t\t\tmax: 2013,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t\tmodel: \"NADP\",\r\n\t}, */\r\n\t{\r\n\t\tlabel: \"Coupled Model Intercomparison Project Phase 5\",\r\n\t\tsublabel: \"(CMIP5, 1860-2100)\",\r\n\t\tvalue: \"cmip5\",\r\n\t\tdepType: \"cmipDep\",\r\n\t\tyears: null,\r\n\t\tdisable: \"\",\r\n\t\tmodel: \"CMIP5\",\r\n\t},\r\n];\r\n\r\nconst dep_depositionInfo = {\r\n\tnormalDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Total N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"kg\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Dry N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"dryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Oxidized N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Reduced N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, */\r\n\t\t{\r\n\t\t\tlabel: \"Proportion Wet N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetdryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Proportion Oxidized N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxredn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t],\r\n\tcmipDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Total Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total Inorganic N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"kg\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Dry Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"dryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Oxidized Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Reduced Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, \r\n\t\t{\r\n\t\t\tlabel: \"Proportion Wet N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetdryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Proportion Oxidized N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxredn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},*/\r\n\t],\r\n\twetDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"kg\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Wet Oxidized Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Reduced Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, */\r\n\t\t{\r\n\t\t\tlabel: \"Proportion Oxidized N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxredn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t],\r\n};\r\n\r\nconst dep_rcpInfo = [\r\n\t{\r\n\t\tlabel: \"Historical\",\r\n\t\tsublabel: \"(1860-2000)\",\r\n\t\tvalue: \"hist\",\r\n\t\tyears: {\r\n\t\t\tmin: 1860,\r\n\t\t\tmax: 2000,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t},\r\n\t/* {\r\n\t\tlabel: \"RCP 2.6\",\r\n\t\tsublabel: \"(2001-2100)\",\r\n\t\tvalue: \"rcp26\",\r\n\t\tyears: {\r\n\t\t\tmin: 2001,\r\n\t\t\tmax: 2100,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t}, */\r\n\t{\r\n\t\tlabel: \"RCP 4.5\",\r\n\t\tsublabel: \"(2010-2100)\",\r\n\t\tvalue: \"rcp45\",\r\n\t\tyears: {\r\n\t\t\tmin: 2010,\r\n\t\t\tmax: 2100,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t},\r\n\t/* {\r\n\t\tlabel: \"RCP 6.0\",\r\n\t\tsublabel: \"(2001-2100)\",\r\n\t\tvalue: \"rcp60\",\r\n\t\tyears: {\r\n\t\t\tmin: 2001,\r\n\t\t\tmax: 2100,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t}, */\r\n\t{\r\n\t\tlabel: \"RCP 8.5\",\r\n\t\tsublabel: \"(2010-2100)\",\r\n\t\tvalue: \"rcp85\",\r\n\t\tyears: {\r\n\t\t\tmin: 2010,\r\n\t\t\tmax: 2100,\r\n\t\t},\r\n\t\tdisable: \"\",\r\n\t},\r\n];\r\n\r\nexport { dep_models, dep_depositionInfo, dep_rcpInfo };\r\n","const acidification = [\r\n {\r\n label: 'Surface Water',\r\n sublabel: '(Aquatic Acidification)',\r\n value: 'aquatic',\r\n disable: 'kg',\r\n name: 'Aquatic Acidification'\r\n },\r\n {\r\n label: 'Forest Soil',\r\n sublabel: '(Forest Acidification)',\r\n value: 'forest',\r\n disable: 'kg',\r\n name: 'Forest Acidification'\r\n },\r\n {\r\n label: 'Empirical Nitrogen',\r\n sublabel: '(Terrestrial Empirical)',\r\n value: 'terrestrial',\r\n disable: '',\r\n name: 'Terrestrial Empirical'\r\n }\r\n];\r\n\r\nconst ecosystem = [\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(minimum CL)',\r\n value: 'formin',\r\n disable: ''\r\n },\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(midpoint CL)',\r\n value: 'formid',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(minimum CL)',\r\n value: 'hpsmin',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(midpoint CL)',\r\n value: 'hpsmid',\r\n disable: ''\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(minimum CL)',\r\n value: 'mfmin',\r\n disable: ''\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(midpoint CL)',\r\n value: 'mfmid',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: ' - Open Canopy (plot)',\r\n value: 'hsrptoc',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: ' - Closed Canopy (plot)',\r\n value: 'hsrptcc',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: ' - Open Canopy (Ecoregion)',\r\n value: 'hsreroc',\r\n disable: ''\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: ' - Closed Canopy (Ecoregion)',\r\n value: 'hsrercc',\r\n disable: ''\r\n }\r\n];\r\n\r\nconst ex_models = [\r\n {\r\n label: 'Total Deposition Project',\r\n sublabel: '(TDEP, 2002-2018)',\r\n value: 'tdep',\r\n depType: 'normalDep',\r\n years: {\r\n min: 2002,\r\n max: 2018\r\n },\r\n disable: '',\r\n model: 'TDEP'\r\n },\r\n {\r\n label: 'Community Multi-Scale Air Quality',\r\n sublabel: '(CMAQ, 2004-2011)',\r\n value: 'cmaq',\r\n depType: 'normalDep',\r\n years: {\r\n min: 2004,\r\n max: 2011\r\n },\r\n disable: '',\r\n model: 'CMAQ'\r\n },\r\n /* {\r\n label: 'National Atmospheric Deposition Program',\r\n sublabel: '(NADP, 1985 - 2013)',\r\n value: 'nadp',\r\n depType: 'wetDep',\r\n years: {\r\n min: 1985,\r\n max: 2013\r\n },\r\n disable: '',\r\n model: 'NADP'\r\n }, */\r\n {\r\n label: 'Coupled Model Intercomparison Project Phase 5',\r\n sublabel: '(CMIP5, 1860-2000)',\r\n value: 'cmip5',\r\n depType: 'cmipDep',\r\n years: null,\r\n diable: '',\r\n model: 'CMIP5'\r\n }\r\n];\r\n\r\nconst ex_depositionInfo = {\r\n\tnormalDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Total N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Dry N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"dryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Oxidized N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Reduced N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, */\r\n\t],\r\n\tcmipDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Total Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Total Inorganic N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Dry Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"dryn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"wetn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Oxidized Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Reduced Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, */\r\n\t],\r\n\twetDep: [\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totaln\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totals\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Inorganic N + S\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"totalns\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t/* {\r\n\t\t\tlabel: \"Wet Oxidized Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Wet Reduced Inorganic N\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"redn\",\r\n\t\t\tdisable: \"\",\r\n\t\t}, */\r\n\t\t{\r\n\t\t\tlabel: \"Proportion Oxidized N (0-1)\",\r\n\t\t\tsublabel: \"\",\r\n\t\t\tvalue: \"oxredn\",\r\n\t\t\tdisable: \"\",\r\n\t\t},\r\n\t],\r\n};\r\n\r\nconst ex_rcpInfo = [\r\n {\r\n label: 'Historical',\r\n sublabel: '(1860-2000)',\r\n value: 'hist',\r\n years: {\r\n min: 1860,\r\n max: 2000\r\n },\r\n disable: ''\r\n },\r\n /* {\r\n label: 'RCP 2.6',\r\n sublabel: '(2001 - 2100)',\r\n value: 'rcp26',\r\n years: {\r\n min: 2001,\r\n max: 2100\r\n },\r\n disable: ''\r\n }, */\r\n {\r\n label: 'RCP 4.5',\r\n sublabel: '(2010-2100)',\r\n value: 'rcp45',\r\n years: {\r\n min: 2010,\r\n max: 2100\r\n },\r\n disable: ''\r\n },\r\n /* {\r\n label: 'RCP 6.0',\r\n sublabel: '(2001 - 2100)',\r\n value: 'rcp60',\r\n years: {\r\n min: 2001,\r\n max: 2100\r\n },\r\n disable: ''\r\n }, */\r\n {\r\n label: 'RCP 8.5',\r\n sublabel: '(2010-2100)',\r\n value: 'rcp85',\r\n years: {\r\n min: 2010,\r\n max: 2100\r\n },\r\n disable: ''\r\n }\r\n];\r\n\r\nconst getSWLayerID = layerValue => {\r\n let id;\r\n switch (layerValue) {\r\n case 'cmaq':\r\n id = 0;\r\n break;\r\n case 'tdep':\r\n id = 1;\r\n break;\r\n case 'cmip5rcp45':\r\n id = 2;\r\n break;\r\n case 'cmip5rcp85':\r\n id = 3;\r\n break;\r\n case 'cmip5hist':\r\n id = 4;\r\n break;\r\n default:\r\n id = null;\r\n break;\r\n }\r\n return id;\r\n};\r\n\r\nconst getHerbSRLayerID = (layerValue) => {\r\n let id;\r\n switch (layerValue) {\r\n case 'cmaq-cc':\r\n id = 0;\r\n break;\r\n case 'cmaq-oc':\r\n id = 1;\r\n break;\r\n case 'cmip5hist-cc':\r\n id = 2;\r\n break;\r\n case 'cmip5hist-oc':\r\n id = 3;\r\n break;\r\n case 'cmip5rcp45-cc':\r\n id = 4;\r\n break;\r\n case 'cmip5rcp45-oc':\r\n id = 5;\r\n break;\r\n case 'cmip5rcp85-cc':\r\n id = 6;\r\n break;\r\n case 'cmip5rcp85-oc':\r\n id = 7;\r\n break;\r\n case 'tdep-cc':\r\n id = 8;\r\n break;\r\n case 'tdep-oc':\r\n id = 9;\r\n break;\r\n default:\r\n id = null;\r\n break;\r\n }\r\n return id;\r\n};\r\n\r\nconst ex_chartInfo = [\r\n {\r\n variable: 'totalns',\r\n ex: 'ta'\r\n },\r\n {\r\n variable: 'totalns',\r\n ex: 'aa'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'formin'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'formid'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hpsmin'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hpsmid'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'mfmin'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'mfmid'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hsrptoc'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hsrptcc'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hsreroc'\r\n },\r\n {\r\n variable: 'totaln',\r\n ex: 'hsrercc'\r\n }\r\n];\r\n\r\nexport {\r\n acidification,\r\n ecosystem,\r\n ex_models,\r\n ex_depositionInfo,\r\n ex_rcpInfo,\r\n getSWLayerID,\r\n getHerbSRLayerID,\r\n ex_chartInfo\r\n};\r\n","import Spinner from 'js/components/shared/Spinner';\r\nimport React, { Component } from 'react';\r\nimport _debounce from 'lodash/debounce';\r\nimport TimeSlider from 'js/components/TimeSlider';\r\nimport LOP from 'js/components/legendOverlay/LOP';\r\nimport { dep_models, dep_rcpInfo } from 'js/config/DepositionOptions';\r\nimport { ex_models, ex_rcpInfo } from 'js/config/ExceedanceOptions';\r\n\r\nexport default class Map extends Component {\r\n\tdisplayName: \"Map\";\r\n\r\n\tcomponentDidUpdate(prevProps) {\r\n\t\tconst needsUpdating = Object.keys(this.props).some((key) => {\r\n\t\t\treturn (\r\n\t\t\t\tthis.props[key] !== prevProps[key] &&\r\n\t\t\t\tkey !== \"activeView\" &&\r\n\t\t\t\tkey !== \"timeSliderYears\"\r\n\t\t\t);\r\n\t\t});\r\n\t\tif (this.props.model && this.props.model === \"cmip5\") {\r\n\t\t\tif (this.props.rcp === null && prevProps.model !== \"cmip5\") {\r\n\t\t\t\tprevProps.setTimeSliderYears(0, 0, prevProps.view);\r\n\t\t\t} else if (this.props.rcp !== prevProps.rcp) {\r\n\t\t\t\tif (this.props.mapType === \"deposition\") {\r\n\t\t\t\t\tthis.handleYearsUpdate(this.props.rcp, dep_rcpInfo);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.handleYearsUpdate(this.props.rcp, ex_rcpInfo);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (this.props.model && this.props.model !== prevProps.model) {\r\n\t\t\tif (this.props.mapType === \"deposition\") {\r\n\t\t\t\tthis.handleYearsUpdate(this.props.model, dep_models);\r\n\t\t\t} else {\r\n\t\t\t\tthis.handleYearsUpdate(this.props.model, ex_models);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.props.mapType !== prevProps.mapType) {\r\n\t\t\tprevProps.setTimeSliderYears(0, 0, prevProps.view);\r\n\t\t}\r\n\t\tif (needsUpdating) {\r\n\t\t\tconst data = {\r\n\t\t\t\tacidification: this.props.acidification,\r\n\t\t\t\tcriticalLoad: this.props.criticalLoad,\r\n\t\t\t\tdeposition: this.props.deposition,\r\n\t\t\t\tdepType: this.props.depType,\r\n\t\t\t\tmodel: this.props.model,\r\n\t\t\t\trcp: this.props.rcp,\r\n\t\t\t\tyear: this.props.year,\r\n\t\t\t\toverlay: this.props.overlay,\r\n\t\t\t\tunit: this.props.unit,\r\n\t\t\t\tecosystem: this.props.ecosystem,\r\n\t\t\t\tbasemap: this.props.basemap,\r\n\t\t\t};\r\n\t\t\tthis.props.mapsController.updateVisibility(\r\n\t\t\t\tdata,\r\n\t\t\t\tthis.props.mapType,\r\n\t\t\t\tthis.props.view\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\thandleYearsUpdate = (value, yearData) => {\r\n\t\tlet years = {\r\n\t\t\tmin: 0,\r\n\t\t\tmax: 0,\r\n\t\t};\r\n\t\tyearData.forEach((data) => {\r\n\t\t\tif (data.value === value) {\r\n\t\t\t\tyears = data.years;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.props.updateYear(years.min, this.props.view);\r\n\t\tthis.props.setTimeSliderYears(years.min, years.max, this.props.view);\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t this.props.setActiveView(this.props.view)}\r\n\t\t\t\tclassName={this.props.setActiveViewClass(this.props.view)}>\r\n\t\t\t\t
\r\n\t\t\t\t\t{this.props.title && (\r\n\t\t\t\t\t\t
{this.props.title}
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{this.props.mapType === \"criticalLoads\" ||\r\n\t\t\t\t\t(this.props.timeSliderYears.min === 0 &&\r\n\t\t\t\t\t\tthis.props.timeSliderYears.max === 0) ? null : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nclass RadioButtons extends Component {\r\n\r\n handleChange = (mapType) => {\r\n //when switching between map type options then reset the model, deposition, acidification, and rpc\r\n this.props.resetDataOptions(this.props.index);\r\n this.props.updateMapTypeSelection(mapType, this.props.index);\r\n };\r\n\r\n render() {\r\n const { selectedValue } = this.props;\r\n return (\r\n
\r\n
\r\n select a consideration\r\n
\r\n
\r\n
this.handleChange('criticalLoads')} className={`panel border ${selectedValue === 'criticalLoads' ? 'selected' : ''}`}>\r\n Critical Loads\r\n
\r\n
this.handleChange('deposition')} className={`panel border ${selectedValue === 'deposition' ? 'selected' : ''}`}>\r\n Deposition\r\n
\r\n
this.handleChange('exceedance')} className={`panel ${selectedValue === 'exceedance' ? 'selected' : ''}`}>\r\n Exceedance\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default RadioButtons;\r\n","import React from 'react';\r\n\r\nexport const Email = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const Facebook = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const Pinterest = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const Twitter = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const SurfaceWater = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const ForestSoil = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const EmpiricalNitrogen = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const LeftArrow = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const AddData = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const Information = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { Component } from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { SurfaceWater, ForestSoil, EmpiricalNitrogen } from 'js/utils/Icons';\r\n\r\nconst styleSheet = {\r\n group: {\r\n margin: '5px 0'\r\n }\r\n};\r\n\r\nclass CriteriaSelection extends Component {\r\n radioStyle = {\r\n 'height': '25px',\r\n 'width': '25px'\r\n };\r\n\r\n labelStyle = {\r\n 'marginLeft': 0,\r\n 'fontSize': '12px'\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.selectedValue !== prevProps.selectedValue) {\r\n const mainPanelDIV = document.getElementById('main-panel-container');\r\n mainPanelDIV.scrollTop = mainPanelDIV.scrollHeight;\r\n }\r\n }\r\n\r\n handleChange = (value) => {\r\n this.props.handleSelection(value, this.props.index);\r\n };\r\n\r\n render() {\r\n const { selectedValue, menuPrompt } = this.props;\r\n const row = menuPrompt.toLowerCase().includes('rcp') || menuPrompt.toLowerCase().includes('deposition');\r\n const acidification = menuPrompt.toLowerCase().includes('critical load type');\r\n const menuItems = this.props.selectionOptions.map((choice, index) => {\r\n// const disabled = choice.disable === unit;\r\n const icon = choice.value === 'aquatic' ? : choice.value === 'forest' ? : ;\r\n return this.handleChange(choice.value)}\r\n key={index}\r\n className={`panel-option\r\n ${row ? 'space' : acidification ? 'acidification-option' : 'full'}\r\n ${selectedValue === choice.value ? 'selected' : ''}\r\n ${choice.value === 'histo' || choice.value === 'hist' ? 'histo' : ''}\r\n ${''}`}\r\n >\r\n {\r\n acidification ? icon : null\r\n }\r\n
{choice.label}
\r\n
{choice.sublabel}
\r\n ;\r\n });\r\n return (\r\n
\r\n
{menuPrompt}
\r\n
\r\n {menuItems}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styleSheet)(CriteriaSelection);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class UnitSelection extends Component {\r\n\tdisplayName: \"UnitSelection\";\r\n\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\trender() {\r\n\t\tconst { acidification, mapType, model, deposition, unit, index } =\r\n\t\t\tthis.props;\r\n\t\tconst kgDisabled =\r\n\t\t\tacidification === \"forest\" ||\r\n\t\t\tacidification === \"aquatic\" ||\r\n\t\t\t(mapType === \"deposition\" &&\r\n\t\t\t\tmodel === \"nadp\" &&\r\n\t\t\t\tdeposition === \"totalns\") ||\r\n\t\t\t(mapType === \"deposition\" && model === \"cmip5\" && deposition === \"totalns\");\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
select a unit
{\" \"}\r\n\t\t\t\t
\r\n\t\t\t\t\t this.props.updateUnit(\"eq\", index)}\r\n\t\t\t\t\t\tclassName={`panel border ${unit === \"eq\" ? \"selected\" : \"\"}`}>\r\n\t\t\t\t\t\t(eq/ha-yr){\" \"}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{!kgDisabled ? (\r\n\t\t\t\t\t\t this.props.updateUnit(\"kg\", index)}\r\n\t\t\t\t\t\t\tclassName={`panel border ${unit === \"kg\" ? \"selected\" : \"\"}`}>\r\n\t\t\t\t\t\t\t(kg/ha-yr)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","const acidification = [\r\n {\r\n label: 'Surface Water',\r\n sublabel: '(Aquatic Acidification)',\r\n value: 'aquatic',\r\n disable: 'kg',\r\n name: 'Aquatic Acidification'\r\n },\r\n {\r\n label: 'Forest Soil',\r\n sublabel: '(Forest Acidification)',\r\n value: 'forest',\r\n disable: 'kg',\r\n name: 'Forest Acidification'\r\n },\r\n {\r\n label: 'Empirical Nitrogen',\r\n sublabel: '(Terrestrial Empirical)',\r\n value: 'terrestrial',\r\n disable: '',\r\n name: 'Terrestrial Empirical'\r\n }\r\n];\r\n\r\nconst criticalLoads = {\r\n aquatic: [\r\n {\r\n label: 'Simple Mass Balance (SMB) Model',\r\n sublabel: 'Aquatic Acidification',\r\n value: 'smbWater',\r\n disable: 'kg',\r\n category: 'Simple Mass Balance (SMB) Model',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Aquatic Acidification'\r\n }\r\n ],\r\n forest: [\r\n {\r\n label: 'Simple Mass Balance (SMB) Model',\r\n sublabel: 'Terrestrial Forest Acidification',\r\n value: 'smbTerrestrial',\r\n disable: 'kg',\r\n category: 'Simple Mass Balance (SMB) Model',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Forest Acidification'\r\n }\r\n ],\r\n terrestrial: [\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(minimum CL)',\r\n value: 'forestMin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Forest Ecosystems'\r\n },\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(midpoint CL)',\r\n value: 'forestMid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Forest Ecosystems'\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(minimum CL)',\r\n value: 'hpsmin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Herbaceous Plants and Shrubs'\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(midpoint CL)',\r\n value: 'hpsmid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Herbaceous Plants and Shrubs'\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(minimum CL)',\r\n value: 'mfmin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Mycorrhizal Fungi'\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(midpoint CL)',\r\n value: 'mfmid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Mycorrhizal Fungi'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Open Canopy (plot)',\r\n value: 'hsrptoc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: 'Open Canopy (plot)',\r\n name: 'Herbaceous Species Richness'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Closed Canopy (plot)',\r\n value: 'hsrptcc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: 'Closed Canopy (plot)',\r\n name: 'Herbaceous Species Richness'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Open Canopy (Ecoregion)',\r\n value: 'hsreroc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: 'Open Canopy (Ecoregion)',\r\n name: 'Herbaceous Species Richness'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Closed Canopy (Ecoregion)',\r\n value: 'hsrercc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: 'Closed Canopy (Ecoregion)',\r\n name: 'Herbaceous Species Richness'\r\n }\r\n ]\r\n};\r\n\r\nconst clTotal = [\r\n {\r\n label: 'Simple Mass Balance (SMB) Model',\r\n sublabel: 'Aquatic Acidification',\r\n value: 'smbWater',\r\n disable: 'kg',\r\n category: 'Simple Mass Balance (SMB) Model',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Aquatic Acidification'\r\n },\r\n {\r\n label: 'Simple Mass Balance (SMB) Model',\r\n sublabel: 'Terrestrial Forest Acidification',\r\n value: 'smbTerrestrial',\r\n disable: 'kg',\r\n category: 'Simple Mass Balance (SMB) Model',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Forest Acidification'\r\n },\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(minimum CL)',\r\n value: 'forestMin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Forest Ecosystems'\r\n },\r\n {\r\n label: 'Forest Ecosystems',\r\n sublabel: '(midpoint CL)',\r\n value: 'forestMid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Forest Ecosystems'\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(minimum CL)',\r\n value: 'hpsmin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Herbaceous Plants and Shrubs'\r\n },\r\n {\r\n label: 'Herbaceous Plants and Shrubs',\r\n sublabel: '(midpoint CL)',\r\n value: 'hpsmid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Herbaceous Plants and Shrubs'\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(minimum CL)',\r\n value: 'mfmin',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(minimum CL)',\r\n name: 'Mycorrhizal Fungi'\r\n },\r\n {\r\n label: 'Mycorrhizal Fungi',\r\n sublabel: '(midpoint CL)',\r\n value: 'mfmid',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '(midpoint CL)',\r\n name: 'Mycorrhizal Fungi'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Open Canopy (plot)',\r\n value: 'hsrptoc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Herbaceous Species Richness - Open Canopy (plot)'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Closed Canopy (plot)',\r\n value: 'hsrptcc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Herbaceous Species Richness - Closed Canopy (plot)'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Open Canopy (Ecoregion)',\r\n value: 'hsreroc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Herbaceous Species Richness - Open Canopy (Ecoregion)'\r\n },\r\n {\r\n label: 'Herbaceous Species Richness',\r\n sublabel: '- Closed Canopy (Ecoregion)',\r\n value: 'hsrercc',\r\n disable: '',\r\n category: 'Empirical',\r\n layer: 'Critical Loads',\r\n description: '',\r\n name: 'Herbaceous Species Richness - Closed Canopy (Ecoregion)'\r\n }\r\n];\r\n\r\nconst getLayerID = (layerValue, unit, layerTitle) => {\r\n let id;\r\n switch (layerValue) {\r\n case 'smbWater':\r\n id = 0;\r\n break;\r\n case 'smbTerrestrial':\r\n id = 1;\r\n break;\r\n case 'forestMin':\r\n id = 3;\r\n break;\r\n case 'forestMid':\r\n id = 4;\r\n break;\r\n case 'hpsmin':\r\n id = 5;\r\n break;\r\n case 'hpsmid':\r\n id = 6;\r\n break;\r\n case 'mfmin':\r\n id = 7;\r\n break;\r\n case 'mfmid':\r\n id = 8;\r\n break;\r\n case 'hsrptoc':\r\n id = unit === 'kg' ? 15 : 17;\r\n break;\r\n case 'hsrptcc':\r\n id = unit === 'kg' ? 16 : 18;\r\n break;\r\n case 'hsreroc':\r\n id = unit === 'kg' ? 19 : 21;\r\n break;\r\n case 'hsrercc':\r\n id = unit === 'kg' ? 20 : 22;\r\n break;\r\n default:\r\n id = null;\r\n break;\r\n }\r\n if (id > 2 && unit === 'eq' && layerValue !== 'hsrptoc' && layerValue !== 'hsrptcc' && layerValue !== 'hsreroc' && layerValue !== 'hsrercc') {\r\n console.log('CrticalLoadsOptions line 320- id:' + id.toString());\r\n id += 6;\r\n console.log('CrticalLoadsOptions line 320 - after add 6 - id:' + id.toString());\r\n } else if (id < 2 && unit === 'kg') {\r\n id = null;\r\n }\r\n return id;\r\n};\r\n\r\nexport {\r\n criticalLoads,\r\n acidification,\r\n clTotal,\r\n getLayerID\r\n};","import React, { Component } from \"react\";\r\nimport CriteriaSelection from \"js/components/dataOptions/CriteriaSelection\";\r\nimport UnitSelection from \"js/components/dataOptions/UnitSelection\";\r\nimport {\r\n\tcriticalLoads,\r\n\tacidification,\r\n\tclTotal,\r\n} from \"js/config/CriticalLoadsOptions\";\r\n\r\nexport default class CriticalLoads extends Component {\r\n\tdisplayName: \"DataOptions\";\r\n\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\thandleCriticalLoadsSelection = (criticalLoad) => {\r\n\t\tlet model = null;\r\n\t\tclTotal.forEach((c) => {\r\n\t\t\tif (c.value === criticalLoad) {\r\n\t\t\t\tmodel = c.value;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.props.updateCriticalLoad(model, this.props.index);\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{this.props.acidification !== null ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t{this.props.acidification !== null &&\r\n\t\t\t\tthis.props.criticalLoad !== null ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from \"react\";\r\nimport CriteriaSelection from \"js/components/dataOptions/CriteriaSelection\";\r\nimport UnitSelection from \"js/components/dataOptions/UnitSelection\";\r\nimport {\r\n\tdep_models,\r\n\tdep_depositionInfo,\r\n\tdep_rcpInfo,\r\n} from \"js/config/DepositionOptions\";\r\n\r\nexport default class Deposition extends Component {\r\n\tdisplayName = \"Depositon\";\r\n\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\thandleModelSelection = (model) => {\r\n\t\tlet depType = null;\r\n\t\tdep_models.forEach((m) => {\r\n\t\t\tif (m.value === model) {\r\n\t\t\t\tdepType = m.depType;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.props.updateModel(model, depType, this.props.index);\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{\r\n\t\t\t\t\t// If selected model is cmip5 then show RPC menu\r\n\t\t\t\t\tthis.props.model === \"cmip5\" ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\t// If selected model is NOT cmip5 then show Deposition menu\r\n\t\t\t\t\t// If selected model is cmip5 AND an RPC option is selected then show Deposition menu\r\n\t\t\t\t\t(this.props.model !== \"cmip5\" &&\r\n\t\t\t\t\t\tdep_depositionInfo[this.props.depType]) ||\r\n\t\t\t\t\t(this.props.model === \"cmip5\" && this.props.rcp) ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null\r\n\t\t\t\t}\r\n\t\t\t\t{this.props.model !== null && this.props.deposition !== null ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from \"react\";\r\nimport CriteriaSelection from \"js/components/dataOptions/CriteriaSelection\";\r\nimport UnitSelection from \"js/components/dataOptions/UnitSelection\";\r\nimport {\r\n\tacidification,\r\n\tex_models,\r\n\tex_depositionInfo,\r\n\tex_rcpInfo,\r\n\tecosystem,\r\n} from \"js/config/ExceedanceOptions\";\r\n\r\nexport default class Exceedance extends Component {\r\n\tdisplayName = \"Exceedance\";\r\n\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\thandleModelSelection = (model) => {\r\n\t\tlet depType = null;\r\n\t\tex_models.forEach((m) => {\r\n\t\t\tif (m.value === model) {\r\n\t\t\t\tdepType = m.depType;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.props.updateModel(model, depType, this.props.index);\r\n\t};\r\n\r\n\trender() {\r\n\t\t//const disable = this.props.unit === 'kg' && (this.props.acidification === 'aquatic' || this.props.acidification === 'forest');\r\n\t\tconst disable = false;\r\n\t\tconst exTerrestrialDepType =\r\n\t\t\tthis.props.acidification === \"terrestrial\" && this.props.depType\r\n\t\t\t\t? ex_depositionInfo[this.props.depType].filter(\r\n\t\t\t\t\t\t(type) => !type.label.includes(\"S\")\r\n\t\t\t\t )\r\n\t\t\t\t: false;\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{this.props.acidification === \"terrestrial\" ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t{this.props.acidification !== null &&\r\n\t\t\t\t(this.props.acidification !== \"terrestrial\" ||\r\n\t\t\t\t\t(this.props.acidification === \"terrestrial\" &&\r\n\t\t\t\t\t\tthis.props.ecosystem)) &&\r\n\t\t\t\t!disable ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t{\r\n\t\t\t\t\t// If selected model is cmip5 then show RPC menu\r\n\t\t\t\t\tthis.props.model === \"cmip5\" && !disable ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\t// If selected model is NOT cmip5 then show Deposition menu\r\n\t\t\t\t\t// If selected model is cmip5 AND an RPC option is selected then show Deposition menu\r\n\t\t\t\t\tthis.props.model !== null &&\r\n\t\t\t\t\t((this.props.model !== \"cmip5\" &&\r\n\t\t\t\t\t\tex_depositionInfo[this.props.depType]) ||\r\n\t\t\t\t\t\t(this.props.model === \"cmip5\" && this.props.rcp)) &&\r\n\t\t\t\t\t!disable ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null\r\n\t\t\t\t}\r\n\t\t\t\t{this.props.acidification !== null &&\r\n\t\t\t\tthis.props.model !== null &&\r\n\t\t\t\tthis.props.deposition !== null ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport MapTypeSelection from \"js/components/dataOptions/MapTypeSelection\";\r\nimport CriticalLoads from \"js/components/dataOptions/CriticalLoads\";\r\nimport Deposition from \"js/components/dataOptions/Deposition\";\r\nimport Exceedance from \"js/components/dataOptions/Exceedance\";\r\nimport { addData } from \"js/config/config\";\r\nimport { LeftArrow, AddData } from \"js/utils/Icons\";\r\n\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\n\r\nexport default class DataOptions extends Component {\r\n displayName: \"DataOptions\";\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n display: false,\r\n };\r\n }\r\n\r\n toggleView = () => {\r\n this.setState({\r\n display: !this.state.display,\r\n });\r\n };\r\n\r\n clearSelection = () => {\r\n this.props.resetDataOptions(this.props.index);\r\n this.props.updateMapTypeSelection(null, this.props.index);\r\n };\r\n\r\n render() {\r\n let selectionGroup = null;\r\n const {\r\n\t\t\tacidification,\r\n\t\t\tcriticalLoad,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tecosystem,\r\n\t\t\tindex,\r\n\t\t\tmapType,\r\n\t\t\tmodel,\r\n\t\t\trcp,\r\n\t\t\tunit,\r\n\t\t\tresetDataOptions,\r\n\t\t\tupdateAcidification,\r\n\t\t\tupdateCriticalLoad,\r\n\t\t\tupdateDeposition,\r\n\t\t\tupdateEcosystem,\r\n\t\t\tupdateMapTypeSelection,\r\n\t\t\tupdateModel,\r\n\t\t\tupdateRCP,\r\n\t\t\tupdateUnit\r\n\t\t} = this.props;\r\n const { display } = this.state;\r\n switch (mapType) {\r\n case \"criticalLoads\":\r\n selectionGroup = (\r\n \r\n\t\t\t\t);\r\n break;\r\n case \"deposition\":\r\n selectionGroup = (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n break;\r\n case \"exceedance\":\r\n selectionGroup = (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return (\r\n
\r\n \r\n
{addData}
{\" \"}\r\n {\" \"}\r\n \r\n
\r\n \r\n
{\" \"}\r\n
\r\n
\r\n {\" \"}\r\n {selectionGroup}{\" \"}\r\n\r\n {/* units here */}\r\n \r\n
\r\n

clear selection

{\" \"}\r\n
{\" \"}\r\n
{\" \"}\r\n
{\" \"}\r\n
{\" \"}\r\n
\r\n );\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/topo.11d09f0d.jpg\";","export default __webpack_public_path__ + \"static/media/terrain.5105f979.jpg\";","export default __webpack_public_path__ + \"static/media/dark_gray_canvas.927acc23.png\";","export default __webpack_public_path__ + \"static/media/natgeo.0528f44a.jpg\";","export default __webpack_public_path__ + \"static/media/usa_topo.f7d9620c.jpg\";","import React, { Component } from 'react';\r\nimport { displayOptions } from 'js/config/config';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport Satellite from 'images/satellite.jpg';\r\nimport Hybrid from 'images/hybrid.jpg';\r\nimport Streets from 'images/streets.jpg';\r\nimport Topo from 'images/topo.jpg';\r\nimport Terrain from 'images/terrain.jpg';\r\nimport DarkGrayCanvas from 'images/dark_gray_canvas.png';\r\nimport GrayCanvas from 'images/light_gray_canvas.jpg';\r\nimport NationalGeographic from 'images/natgeo.jpg';\r\nimport Oceans from 'images/tempoceans.jpg';\r\nimport OpenStreetMap from 'images/temposm.jpg';\r\nimport TopoMaps from 'images/usa_topo.jpg';\r\n\r\nclass DisplayMenu extends Component {\r\n displayName: 'DisplayMenu';\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n layout: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setInitialLayout();\r\n }\r\n\r\n setInitialLayout = () => {\r\n this.setState({ layout: this.props.layout });\r\n }\r\n\r\n setLayout = (layout) => {\r\n this.setState({ layout });\r\n this.props.mapViewLayout(layout);\r\n this.activeLayout(layout);\r\n };\r\n\r\n activeLayout = (layout) => {\r\n return this.state.layout === layout ? 'primary' : 'default';\r\n };\r\n\r\n render() {\r\n const { index, updateBaseMap } = this.props;\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n
this.setLayout(1)}>
\r\n
this.setLayout(2)}>
\r\n
this.setLayout(3)}>
\r\n
this.setLayout(4)}>
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {displayOptions.basemaps}\r\n \r\n
\r\n
updateBaseMap(index, 'satellite')}>\r\n \"\"\r\n
Imagery
\r\n
\r\n
updateBaseMap(index, 'hybrid')}>\r\n \"\"\r\n
Imagery with Labels
\r\n
\r\n
updateBaseMap(index, 'streets')}>\r\n \"\"\r\n
Streets
\r\n
\r\n
updateBaseMap(index, 'topo')}>\r\n \"\"\r\n
Topographic
\r\n
\r\n
updateBaseMap(index, 'terrain')}>\r\n \"\"\r\n
Terrain with Labels
\r\n
\r\n
updateBaseMap(index, 'dark-gray')}>\r\n \"\"\r\n
Dark Gray Canvas
\r\n
\r\n
updateBaseMap(index, 'gray')}>\r\n \"\"\r\n
Light Gray Canvas
\r\n
\r\n
updateBaseMap(index, 'national-geographic')}>\r\n \"\"\r\n
National Geographic
\r\n
\r\n
updateBaseMap(index, 'oceans')}>\r\n \"\"\r\n
Oceans
\r\n
\r\n
updateBaseMap(index, 'osm')}>\r\n \"\"\r\n
Open Street Map
\r\n
\r\n
updateBaseMap(index, 'topo')}>\r\n \"\"\r\n
USA Topo Maps
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default DisplayMenu;\r\n","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAAEAeAB4AAD/2wBDAAUFBQgFCAwHBwwMCQkJDA0MDAwMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ3/2wBDAQUICAoHCgwHBwwNDAoMDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ3/wgARCACFAMgDAREAAhEBAxEB/8QAGwAAAQUBAQAAAAAAAAAAAAAABQABAgMEBgf/xAAZAQACAwEAAAAAAAAAAAAAAAAAAQIDBAX/2gAMAwEAAhADEAAAAfT8Gi6RzGfoFrcXP5+l0Wnl6HKtU6Wst0R1sT+aUxwaE6o78zrpVlgISnW3Q7UC7bKWpyqTmzl83R6DRzeWy9bp9XJ2NZYw2Tjj1w055aIiGM0QsiycXlSTQ3MIGBwQTRJz22WwT5LL1Ol1crk8nX7PXyJizJW31jLInc8nThNANEekzSsBmZlHPUBUphnQYbmFtxoV0Iy4vJ1+i1cnns3V67Vyq0q3AVsqP5paYtmc/pgWrkQrJMSGDDWqkmBIQStCOsWWQ+GnjsnV6XTyQWfpdTq52eNVOmt2jFEmDBasVsT+eVgOCBCiPBWq0kEphHWIHzyC1a+ZzdLoNHODUbek0YM0qMWuroM07UREA1Ixne9EmOKKaBggGCqL2BHUUUSSL0BKtnOZ+ge0YBFOvp7+c+qjNFEqmkZb0AZ1tDsknBgZNgYEFMldeqaJTgME2wdWwDRtJWZM0dHSaubu0UUZpyDJJCNEehzSvCbSBhshgYK5Ft8aaJSgMCByQKvYHo1kLMlav6nbzK4xlBoKtMc9bI1ljTgwMmwMEJFl8aqJPAQMCG4AKt4+q/dZnyustdlIqVhCFhbbGGaVjJtIGTYGCEiy+LBTnlKIgQIcg56rfirt1zpD38+Th18NN8q7dMKc8rETCQmGwMFTLtEaaJKRjsWrM5ghoUw5+ndijdpdeR1krMhAutthfZUqHJkgQMDBlYC0RO0u+DZHNaIlIsjTJAhOwPDXljbGLpiGLcWgLJt5QujGTJMZDBBgbRHRUyNTYEDM53TE9nlbFoA99nLy1SDXRLXlC1uLW4s5uS0OmbTgwQZy+iJGtl6WgYECAdYCbo9Nlm4sOivjNMNgSwdLZltL24tko2tYS2toqq0GWQIvV0AxS2BAgQIEAW+JRO6lzZzVs6kW49tSDFuLZKNjVTOdlM/A0SgK0RrrZmloGBDQISBBEOV1R6XPLUjnaN9abjqSM24tko2NIMDmDcuv00Z6XOpoGBDYTggQ0CDHNC74/wD/xAAmEAACAQMDBAMBAQEAAAAAAAABAgMABBIQETETICEyIjAzFEFC/9oACAEBAAEFAid1HtcfrZ+h5j8RKPB5FXDOqxkzsAF0NRXm5K7aKN6juGkr+hduuKMvkTrlHPmNgak+IPMh3e0/Mcf8f7XFC5VHjjEeryZCAZ6Fa4VIcK6WwMINGIUI9ii4ChTcnmDxFwpHkUKZsQidZB405o2SrIox1caRx5V1T1CzlFO4pUypxRGVDj1gNLzl44ppczFH0xpcSgmDfbsZce1Vyr8weC2K8LN8Yl5PFSvgIVzOk8oiXpmUjt5phtqq5V4jCnLSX8zxc/FE9j6u2NNtcVGnTXSR8qhjwHcRvRG1Bcq8RiuNJvyq6bdI/Y+KEKyiODpto+7VDCZW+gjKvEY7J/EQ5uahG77ZMxxoeNJZMKa3xZRj9PoOw8XX5p5a6q1/RBXsdDEJRHF8u816Dntbi79If0veYTgf6KQ6c0x+g16D3Hdc+lv+l7zJsQgYNxW/hRiB572bagMa5r1qedYyrBx2Xo2q2/S89oRkRGKXxSr5fvlfpq4Z1TJhpLH0qt/iupONXa71bR7Pd+Tb8itt6Vt6B3PaTtX9WEgt0z1NZFGRg2t+VCMsaUFQmMqY7bkUtH40aB37CdqdzKYYt+6dDVqZCw86XURmSaXA9RS/qttS0NGcQCF31lmWEXUjKIY8175UYUFMY0vI48rSKPK89rblaGjoJBI7KYpBIN6uYDUEX0kb08RZ0bcVe+1n7XntbUtDWePMW05elG1H5fXNEJaWYJN//8QAOhEAAQEEBgYHBgcBAAAAAAAAAQACAxEhMTJBcYHBBEBCUWHwEBIgIpGx0RQwoaLh8RNSYnKCsuPC/9oACAEDAQE/AQOq0BxRoN4zTioE+r4JiTIuCam2byjteHiRlqAbsamEO9V8LfrzJRIkfA/VM94gWy8NysN4zTqTAT2uUKEKxN5zRkMfL76kGiJWLiOfsrDgmKouTc2zf0Cho4ZpqwcOg6iyYd2w+diEkJBUvP5Zo0FUDHyCapPNEtUhMwsViYm2P3JuTJuQ2ebeg9g+/FY3j+yNCdzaDW6nLn1TyqQrTwEPhBHVBWx/6CaoNxTod+CeVYbyPNGho3euSOphMV8c03VNycGcOCemDKaq4nyH11QUhO62PqntQlOKSn1GKa1QJ1WKfVDzatHtwT16Gu6LCusERC46o7rnin9QrR9rDNNVjf0cD9jzJUU6m4M4J/UxWj7WGafO2RMcVBGYjhzemqI6lCNCcSatjcU+MgJgxoIKcd2MQRRw3p/Z0A9Xnm9EQRHV1Fh97OethRHML282j5P9F7ed3yf6J2//ABnnEM7obv1NJ/s45dLMx1fD05zQ/KaPI71CEjqDQiE1JWnBaMzNop/s45dikefPPxUz74dLLkPozmmnAdQiYlaPan+zjl2iKGhRqGj7WGa0ixaPan+zjl2Qmd1kPf8A/8QAKhEAAgIBBAAFBAIDAAAAAAAAAAECETEQICFBAxIwUWETMuHwFIFxkcH/2gAIAQIBAT8BO0TyRwPJ0e2sVY3WqVmCUX92kFY5XtT99GexLJHA9q4RJ3rFUSfQnRKPcT7Y+h8DHlixtgiTrWKsbrW6Ju98I3yz50Z0LVK+DCG71ivKiTt1txthG+TGx4I5PzpBVySfWsESdb8awjfJgTvT2FklwmRydEVbMGdEujCG79GEb5MDdkXT06/fYWSWCOkFRN9awXZJ1x6KjZgbvY8fvsRySwQIq2N0tUrMGfQSswN3tlgjklg8MgSesVRJ9eglZgbvdLBDJMgq5FxrFWN16CVmDI1W6WCGSZEeNVwiTvelYlRJ2RdcDVmONs8EMkyL0XyQySdLelYlRKWsXZNd7KJxdEYNP8o8RUiHeqG73ZEqJS62LgyNVrGHnPoft/g+h8r/AH+DxYeSP9/5/wCEe9nztyJUSfW6LoatGONPCl5XRHl+x0v7PHlaUSGHsS6MapWJUSfXoRfRJd6/Wfh0j+Q5pqPB4hHD2Y1SsSocvb0cCdklWk+iHZ4hHD23Q138lUSfpx4Hg//EADoQAAECAgcEBwYFBQAAAAAAAAECEQAhEBIxQVFhcSAigcEDMDKRobHwE0JSgtHxI2Ky0uFyc5Kiwv/aAAgBAQAGPwKBoeUK4eQjjB1PnCdISKXQHa3SK7AfnQo73Bpi7WyJSoaKrSeqNWJnzzLbCX94fCRc9pt9GAr4rLLO9ovZq3Cf0hmMiA+ZZvMRVGLXW6W+EORVf16eHHhBN0CFHOO/zNCRkBGg8/tTVJTOVtisDyzjdk5enc3n+Apcd5Ee0UkJXYbO+iUawJk1bHbBsMIABIqhgYInvJq+f1g5qCu5v2iHni0BOEqGMCDqfOODxwgDCCaHnLAP4ZR7M1Vpbti3+FUtDVQejm0rDgcrW+0NsuwG+o1r5LOXC2Ge8giWB43XmeEdGrtKM/8ARUY01sKHj5OVDnCh7YeyqWk46QO02MiHuIsENxNITnMOUk5JNjh3IeHJJwe1s+tnHCODQP6h5wo0S7RkA7HNnvwisd6rYVJZYyONLn0bvWEbwa8sxSqbuL+snR8p/SaGzDd8DWNfvEpqUWAgMKiiLw6VAOJf5O8rjASLqQoSCVNXBBFYymnC57YsAfCzq3MOKPlP6aBrA4+RgDCPxA8WlQG6l7hSySAq7meA8YrWFJtZi+BuLfE3UtQ52RqPOBryMCGy2JTUosB6wir23Ake0m3srvYw3UMKHOyOHmIGsCPlPmI1h6Zywa7OKyiVmx/t1DChztDhCdeRhPHlFbKLIbChobqGpY27ScjyMJ4+RhOh5QBPViW/nCFFV4H/AFlDiHicP1LmH74A7S/hFrev4isLDsjXlHAwnQ8obKhu6MrYbbKgKxwEJJUClZG8n3TdfvJxEb9uVP5VKCnnXfBLWvZbJzDVShrjPxz89icCxtYeTMbDpAInbyg6bBx2yk2JZzrY3GXfHtPC58WxOzW6RxvFyVblW4APbwd5vEp0iu7Pd9o3k9IO79sVavSPh6TBCHkRbxhXDnS/fDi7aNxFz7vSIf3Tjnm0VjMDsVhvDJ9oLTaidj5WccYYgiqTgxKt6c5aCy80sntAuICejWlTOSawUqscpsE3Zx0u8BvoLuwZJDzj+4tS/lfd8DCuHPYdXZ9Sh1Cqk2C/jcNKXVDyqqHfiAbpXzckQAuaU9lxPjmLM+oqIG4o3Sm4JvEmeA5rYnnSKwmbxEhZjA0MK+XnsVTYYqKcyklM1q/MT7oiU/pEo9ontC3NN4GGRguKqCxCMG+vVVFqJSAFKUSRVGDBk71xwePGdrUJ0PKDoIGhhXDns3h7Wk+UJsSkg1QLmYNnblRp1bHG7WD0ABkHrFRN2cf/xAAoEAEAAQMDAgcBAQEBAAAAAAABEQAhMUFRYXHwECCBkaGxwdHh8TD/2gAIAQEAAT8hnE2frwgc8DSMJ3f0H5SlN391XtR9yf2oOg+BfvxMbTQznrsXX5gYvUD38RECJwcxuS0TVsIFW1rufDYy1PcCssERYwBIkNgtJfmdevhK41rCeSAZsIl9oLpsKiYJCQpmAzfcMs8RemOQQKQIFlnSUhLtNCLIWyDlJ0rGc2oEmGWxDS73Q60ZsAkmIRuNlj2da/eKPk/a5AGeGM/30d5UJw/ldaHxb8oQerqdjuTQR/3oDwxrQwmpdheQTsehFlsRulFOBIbTe205jdfGTvVg2DF4kSmNQhs1zGiJLrIm3EscxNRGPatf1cV3NigBgGBg6AnReg2OKRMQDkTQm2S0UFNYO94NK63yvFsyi5b1jNvTDc9eIGIwluAS5d+YWJvFCbggnYIqIxbpSnfM9HXo/wCV8B/K7HupRvP7NPsfiuhk+1v2sOb6t9zWdT0YZXA76oyYnSprTCP3DMDfL0G1CEbeCev9a980aSw7UvEplJLa5xQQCweCa602XHHg1iFxGQcGOhzahAZC0whC0assi1xAHZGUF1rQHtvqGCNGCDOJ9ghenp4M9gy/labM/U1P05qJayXHn+b0p5L+96GzWJI3tUl6A+Z/lFk3v73qUoFGAy8GD5qODamS17qgZkm1t/KqWut1YA/PCYoGt7jKBaxUDNWM2oIgdkDshl3ePJE2r0HlRwWNeKYs4KN3ShLcfmvWux0q4OHugoSe/wBOnHUHxH3QVY0GNW3YrLDfmry6EgNXtAsyF93Pi6QI3bN0LS6SxoaAwBzXuDYzktNrpQjypg1L8UcGNXauxrUCBDqU4pxNoDhxV5pZXpt/OJ2r4/4v+Vh5T8/inICAlRLzmwStMAkMZsxcTDCiUXCgwEeCxU6TEbRiNebmhwUMcm5DEuCg80GKkw0zg9Xb/awD0577tQK6nwd60ytQ+Tbw7DlWwZkPdrqIntL9lD0pe1QltF9iP2rLC4nTkcjyUUkRhhzAxfQllsX8cjC0knJEXm5FndU4qQynjIpOGIB2aCjz4v1dv+1gHpuvfcUCup8Heu/i2GnB0D3I/awO+FGz3qR4tEr0w/dexvaWfz3qJBlsd8UMDwYgcholhcuAC60MiFc7nggSEbN+ajZPLl6tHnVX3HbvardkrQS6n13rv5M3RqygGHx/tWR5fr/fAUBXX8V6HB0P74YrO6mWoYYHOfSzSCiiKgtN7ALuvHSijzJXU+jd/N/kt3Sv9ay9jjy3LpS9V/r8q8eX3V7o7/ent5lHyPtarMo5Ksbvpp6J++ET2a9NvX6moiGX61f5zQRR5loy/FETPq9/FW7rNC8DP99fK07esL1J/qj6X4q7TvUIBLNgMZSBjf0u8UNBqhUzYWaOJ5ZmoQZA9zb+c9Wo8NXDLL3xXqH60o83B9bB1nT/AJmgMvq1d6Gh+9fqplsez/eOlGmVuXVkzsRcnMRKiCyEjw+W6mG7qK/tZ6FGRwn0ftdx3rILBL5peZfWnl69G3U+o5pLf+3d/elPzeh/fzwPK6gApme/+C0kfABIZbVEhCAjdvhAYkMSid9+hp4u0IAosaiFwkSIZCxZRCjI4dDDMLFvkG5B1YqLeAqqCLc+uKS7UaQbzznR0pDwBFhmHT1r475XwMOyXOv80eKgThLJs7VfltnGkfPr5usdDvspRo3FNhY1FQLrCUgpCBGpLJnSAtPrqz4ieuSsoe9hPCkRFo2MgSgaJhN/x5HxEA1rgzDurftQV0xKJ6TRYHOZEnUwoNDOvG6C0BGK+B9/EGUen9dTXjoFF5vkbfzn5iSeUQYwNu4OGIQIcpWhCjhjhaZqWBxrGVLvlRLhoTC2dQlhRAeuKTSoWMwTE5EawlaUJPDTAuof4scxU1KzVLak+WGixF50HSMpwF1JvEUXXatMsfWTo1l0feuXjYWRjLm2GWcax0aQs+XsW995smHLL4yBicF1egSvO2aEietYiihIuMkUAQTSDxo6aYNBkJo/8HCRJZSyhkloMloGKMpkBgl/qL89fFGBFlhtGbI5vN+alpFIi5zsABi2XpXZNyvifaufiYnIQlBmERYHEKN20KmZtUwUG47rD+OzToue7vHd6XfY4IxelTM7WL7upKKUJXsRLmHUHvmf/CLGHfZ0adw8MhMjIDBJuBUUwkkIRJubmv8Avh2HevZN2uyblZ9P3rn5AESKCWQ3OYvojzeooDGBIuQzYmyCa0J5ctKV8aP1/wDMEZBEyiYsn1vUnNclUlu335r/2gAMAwEAAgADAAAAEEg1LcOx6KSFZ20s++aqCJKspPaVeWG7q/sWXf3P/YL+gRytmezW0nC0pLfsxBfbTbmsAdlDk7i4m/T1a2EXX+b5YacczQ/iw+4Bb9d49AAS63Qwmc8ogNP9anQ/NyMTQHLr2u1VMrbjWaUkW3V2ATPW5qEb6XwfNz34MFhqDX5RX/53Ws2ayGksfv8Ax+uJ95EYHF+T2tYmr7JbTl/UmSM//8QAKBEBAAEDAQgDAQEBAQAAAAAAAREAITFBECBRYXGBkbGhwfDRMPHh/9oACAEDAQE/EJk0He5EdRn4zQtUBCcVflKc3aA9v3Qhunqr9ZralCjAQ7D7UWKabUVioprO4PHhWk7Jf3vjTQaxE5OjntjlUAKJSZILoCw4R3FYN2JjtcdQGjIYKHkZ+RJ3nSGoGD+4+6v7PooYP61XN0fAPhWC5fgF9jxTTSzRba0FRWNgRUGOeyCojGn3RbH/AHrQmDwIJ/TslPPhmE0TPRl4h1r4lPz+8VZyB8hVo4+sFOF5fVYjX2YfBDyaUPIfKvqO1NKgrrsdxvtPum1No3AufwwXseJnBF2EzI97f85xRgNIDwUWPy//AKpw3KghjV/BHtoHSg8IfGedLBNZrG1vWNsbIrG6UZOpUnKlPW+n3WIcOHShzFz0GSKcvgvRRhDgJfkvgrjOtPSg2qKN6KiNwrFGT9rQgBSx5E+6sTizQBrMocQGR3s84bFlrtSPNqSOYr88UpVm9GzSaaxbfajYVim9Gj+zV7OWixm38KhGVnHBGHwp1q8LQeR9LSniEeWVFeKCsU2pdKDj/i2orG3IOZQlH5a/VPPovRSdJQ6kpIcvxQTM3YOsPrSlAOPgydb0NrWd2NxtWaxuYnM9tCW/mVKOS/8AKyuB7rGcnpqaBaCfmjjtcxRb/DGdkRuRVqdShadFfEn3Vh9DyKN5/l/5TiTgXilmOVXIS01ME5HUyds9Iddi1ndjbis1ijdxfpRegU6KPpjrS7ie5qy6jxVY6tLw4mKITSn+D4u5ZwQko6O9NY3I24zWaLU3otsNyaTJMdFmOk+6cQ4j01kqGQoVl7qJioAeIg0cz09jpUEahjqcXnQb+Kb0EbUo50bG1CsKuYCbav8AKQ0liAEXwMd7VO00An5ge00GNhECShsb2TJOtqtjzfr+01MvhITlw6zZUyMkSRqfvL0pQORLPMydv4672Kb1G7ijY1MEJTKCFHqWpCPY9WfFFyMMkv8AioZCEDHFRlLQxwlrMdXijTf980rm15XDj0OnCM0RDZWvg7NePYhSgxl0ndb0G80MbXIGEvSSWHji1CZS4I/lGN1t5h+qz6KnZzpQnD8nROuHmTaEQM6hc5caOOzGamg4/wCCUo24wBEZTLrgxU6JF0xi1Y9Z6az6Knac6WLNvuozIZ5Jk+zl3ptsjctvRFGy2Bw9qY9b6qyPM9NZ9FTTbbdJpFKVeXyMPU/Zdkbkbk7IpqYr/8QAKBEAAgECBQQCAwEBAAAAAAAAAAERITEQQVFhcSCBkcGhsTDR8OHx/9oACAECAQE/EG6OdGL7PQ8twi0uS9yJQq2QrI9m/n2biJ0vIiwOtcHMRCBRtKp+EbEitv8ABqpOEoUxx3JUSOk7JfKZ+/aE2rCWshCdvgSJnMmGw8t2EhXsVNvcdkiIdMlHkQlZZiRLapKe2GhEl3ZWWQZQ7aEq0rnkYlFDbcghECUULVUrgWoybHiMsLZl3yzNcFpe7EZ7youCFGbxkLQgt+CayzYTWeCg0wW+pp3NOMIg2QNWzehqV2Lm3qW4IvSFdz/aidBzQFHETJwVaIuF2UgWx2GsHr2Ohag15WRRXFkZPwSlCef6LvllwSVLS/5SgqJIjzI0vLGVy7K5Aaz+ha9LrQa8rYMa8rDaXQQso22Y7M9PTLC3OwR5ZYXJ9mmPUu/YbSbDcpwY3qElFkkTJIjCOhrIdHGQ15WVxtLNhx4I/THZw/sWh5d8C1b2f2REIak5skaTDkgquRvkRl12uXrsUWbDuOLom9PZR2fz5Pgwkl0/pLzZJeTkhuXODmj+gbjOWQ3KRdVh7bEpZeG2xeaKOz1AsquSkXMip1ZM40p3w2ICeZM4YW6ntsUVk6Ol2bKVZ8K+y1DeZEqrfsTm98JU5IibmcluqRsJJdlcohN26bqD4WLU9i1FieyIULUeqEpohEr5JAupjQhC8EqFYvhH+hptK/SvyL3Bah8NaRBNYKKBMxSM/WC6HQY2xBjS5I4VsY0MyeVzjFSzSW4xBQuXBWURt+wYh3sqa0/0s7MIpAzVVdXJbemCxdBJtBBGOjoacicPsnxljFalLvHpiZpw01G9I2JpEvQX3VWSh6GtFK6lK7DOBDo5Vsx5JkIWKTaBa7lGHTsSodsIabSvgiYImJSjTopXyQ1Pk5U1Hs3MS8z6BmRGDG9DttrI4ou8y2DKERqmS/BOpZWJ6b+sLWoJZlVXQaIQp/VMnM/2xTyIVxYJylU2EpmO7sltuKVKd19D7RC0Mr8JOU6CFnyS9ssFs5HonBkPmC1FipFH/PXkQ0qpaT/f6JKEOsvxu2hWFlk9D//EACgQAQABAwMDBAIDAQAAAAAAAAERACExQVFhcYHwEJGhscHhINHxMP/aAAgBAQABPxAtaWtSEIm42TvrSDRsUSTgR0J/ma5W3suhCY9wZQHNp8p6ulIxZVPVR+HvTldaFioUpIsAwxQETBFlMBK3LYyWkidSaiSqFUAAAUlIWlcuuuCmkpqECE97OCFb6RraTCJYZGBCxmSlaF+WyU6t3aoqDGwlWwZ+aNMIN0+ZbRYSQi5IDDIptKiAiQZNlBHWt1YckrdAgiCml/BEUIQi+KhhFcXMTbyBTklW0QjaJmJJfLLMBcYG6WNFW1l3x6vc4kblAEwhC9gfGOnQFIWtTVTU/h9fdNSdtP1j4CpdaH5fVaazG6h7DfgrKTd4u05D2NF6BI0vtpjqtihjSV4akFlgYMkBMYk6mwW2FtSs2HagVjHm7dtGu0VNr6CpSLWxsiECVJCuTEdi5FQQpEioBvQLl9D+6imaDDXlyclMgav8kd3PWos/WTBFvVJuJC2m9P4AQtwGRkZwYGzStQYIYVwFlOhlNCgOByIRaCbLAu6EogJWTI7JAMVZGaEghiVtYVEJQJYLwF+LUTSl5lQ99G+4nFNMBiBvJHK49RWGjbxo+c/d+lK/u/vFHENA/YPcf21J/GKAaVYdBb7Pau8IOhGdIQ6tXDrUgLHJmJiK6yQWAZk3M3LSGSBqISHbCgIGYAE3bbrl9HQN4lrHLc2N0VnOBKOBx5yiJlUBIEALRBGn453a4qWBYanmvNWMQCI0ffoAskg3JwmJLKvwWLAh8EtgoCcAAmCpCAcgCWAIxLCZbJg0YcCIEIygMiABoKRLa7ebVEvEMOfojcpALJWd1esHAItIwqiA7QEnyQai3JmnJaPdc+6ltRE62/dWneyHVD7YqyghdBy+jTRNM43az3WaZs1Rit4kZFiJFmVMVbqGoYjEoUAmC4FAis5IF7cAVwACwFTTBLYB+L/Q/ekUp9wCI5nkSqZBRc+L3RDAAlMAoJvKnpMUgSLNKjdh/FY88/qvj915r50qNPPN6xwMvpyv7pzRwmrOrpK3cBK2IqbrPz/c082EctgZpwIQPJvQ8qWdTqO9EwYG+QxpD0aj/SW5H6mkxTIdQgPdUFi0ef7T3HMBWvCwpECmGEMMwzlXiAgAgCUJBR9AjVgMOEqILoykjJUjhkkOAWxpYGAU0UAIAgKKCoj0MIWc0sTjR346mvpF488KxBH6HK7d6sQICwGU6cv0XUCpQA2lkhmOESeFk0q5HD9RQQFic4G/Zs4qRomYe5FFMm0GC6viLyswZk6G0J4d1NZ8n2Kn1g0C5BAFlZEgiQUCwqFWepy2gVu1QAtABAAT5evoxnLYA1XB3ddr0zhIwI6hgAXU6iCGF8HEyLA5iW98+kEejTb0BFh+OlP3Dt5l0xWIYfocr91IQgLAynByvOC6gpFdjYLi6Gk7tcYApaCbhaxL1ajo9WZsnH3W9sPf75pFcgacSATxLegcWWjUQg8gpwThpJ/GwjqlAwSQHQj7W8lLdA4uDTQpwggEJTl3XFeIwM0wiSon0x20tjXKf7aGiTCaEQiWJGcy0LU7tpfdIYqXZbhNRUIptTappqaiKlGQvsHTrs0y84JAWBkY6rqtglUDCLowwuhou7owBTX4/wBpyNh+vQMYSb9c79VBMciaKGPWFORhmCGZEWssACePdTxRJwk72Ad2CKjbdg2NXoJesGtGCwBAea/esvo70wIayGwjWEBvQNGKDOwxIOBgKRBhZIEKLyZF5aE+q+pVhU50Bzy4MnNgpfjQXR+X6vYJpGvQgi4XQ0nczgYAJ3qfS3g+hpQufbC/fy140w/0rqc3tD8Pmp46J8IfPtR/zE9BAHS9TJ4JL3T2DW9RS6kM+e0tX8iEj5SbwplIiokkbCUViKYZsihV2QB2oR6YpaGlrUVJXT8xoIeBNATtDO415SNjAWAqHUCw2OTru57fxEHdfVSR6b6+s6PKfB+FQAS0j2T44plYAkhmRqwyt9ShhFuUFL5DW14zEwKxUk0EJbqEbSHWGGl0irfSh+I7nw3FPNxtZNB9chkGjEBYwG23Sh6NqamvNqVcu9gar+C0yG9BiYvqK/atgcAUN6ROTUPyNx4HDRF6C1nA4+wmT+ItG/agdAS2Es2yHZHWpOQvBzVk+lKS0YhGbFZYkBYCAohUXPCWZhAhC0BSEDWUhqF+rC3YYSm2MwkTXt8dbVJRCJ9rY5AAe+tSS7QBxpd7ryulqEYtRQ0tLFYoTdC6owJUrCSXVQFgo05TX+jQL23ZpboB2uRvwdhlofDAbXt2Y7nKOFEMNJQNsTXKAlEbRxsOB+fh6fwSKZQCWODBz0EakrI9aYKz4f61NFsgMQpxoa0pibNjw8ca60z2iTfC7s86zI0DkjY3gNlQ6SaECaHX3gg7vhUfvvVnpPpNaKCQMljYMrCxoAosT03SJcBgiJNR+OJZd6AluhJze9TSSQ4242rCl2LoJaVQqBNBcDoXlsxhMiWzYjtePUqHyEgZcF7S6Xl0KQ4JF4sG4mzkXcqLbMLqYiILSSKMVTiAKkkhBmMmpQubD8n6ozSwiKl2FheXeSbQwRkvundi5e5ewk4EBC7GutRfcTSig9VioFiSwZX8EXWGF2p7MDIzOKAppJ6CpMKz1tAvjlKTYrT/ADz9esMiwhIJEmNNRR4YxamRGk4YVkKZIBGWaG4OlQqmxm8XsWBFvULAEIQil1JsEwKiEHXT4lATm6SYhva7TkIYi9wLzcLJmhkd3YURnkMyODahRMpihBt55xSQyiQGx9TL51AJfLBrMvdl7BsTQCvjCaW6b7mmM2ot6TR6JVgDK8Hu3QLzi5exiSwEiBEmaAzoClwg3hdlyOR2RFFvPnzTSP4Y88zUYjxKCcQUJADokX7cIZQz8GIjUhaEMDj5mRBIRGYvb0V6gbGQi8l7hbJF2nAQy72QAkEAIsWk6eNQEky2AyqvuBkSG0FANBLSCIQAhFGfPn+mhNBag0p/GLMEuIQLIAgpBCpQIirhRlDcxBSZtoW49A0e0ASBUFACYDC6CrgEJckaMWwMhYrNSEJARFGU4IdVcdvOvnH8seeNJtCMglNsECzWOFPIk8SECV2JguYg6q8t5+KipspQS+EBlsgliy1Cc2asUg7jBCWRgQ18r9NulYNSKY0FDaW6giRyJkcjcqy3EohYFxZnIqiSADTEyCbjopIM5KYQpcGINzTc50BWRyfN6cCEkwRmBkoEEbbOaJkGu2BIkyrB0246aHmn/B0K6AiQwKNzJIk6UMzQ4sEZJIS8iUzcMwwAkmJoEzMMWHp5Tyu1g+R7OXEUKp9lWmm2iml3EAARYJFsnFOpUkssxuQyaSRhjRKC+Qyu7+DBgApFM6DAUe5EWGw3ugnnnkfymj1y1uRAIUKgD3Gsl7cElCCFgkEIyELAf//Z\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/jpeg;base64,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\"","import React, {Component} from 'react';\r\n\r\nconst stylesheet = {\r\n background: {\r\n display: 'none',\r\n marginTop: '15px'\r\n },\r\n animation: 'animation: spinner 0.95s cubic-bezier(0.645, 0.045, 0.355, 1.000) infinite',\r\n foreground: { fill: '#aaa' }\r\n};\r\n\r\nexport default class PrintSpinner extends Component {\r\n displayName: 'Spinner';\r\n\r\n render () {\r\n const {backgroundColor, active, fill} = this.props;\r\n let backgroundStyle = Object.assign({}, stylesheet.background);\r\n // Set background if passed in\r\n if (backgroundColor) { backgroundStyle.background = backgroundColor; }\r\n // Show the spinner if it is active\r\n backgroundStyle.display = active ? 'block' : 'none';\r\n // Construct the foreground styles\r\n let foreground = `${!active ? '' : stylesheet.animation};`;\r\n foreground += `fill: ${fill || stylesheet.foreground.fill};`;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n `\r\n }} />\r\n
\r\n );\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/share.8e54a569.svg\";","export const VIEW_READY = 'VIEW_READY',\r\n FETCH_ITEM_INFO = 'FETCH_ITEM_INFO',\r\n PRINT_ACTIVE = 'PRINT_ACTIVE',\r\n PRINT_ALL = 'PRINT_ALL',\r\n SET_TITLE = 'SET_TITLE',\r\n TOGGLE_REPORT = 'TOGGLE_REPORT',\r\n TOGGLE_DOWNLOAD = 'TOGGLE_DOWNLOAD',\r\n SET_REPORT_STATUS_TEXT = 'SET_REPORT_STATUS_TEXT';\r\n","import {\r\n VIEW_READY,\r\n PRINT_ACTIVE,\r\n PRINT_ALL,\r\n FETCH_ITEM_INFO,\r\n SET_TITLE,\r\n TOGGLE_REPORT,\r\n TOGGLE_DOWNLOAD,\r\n SET_REPORT_STATUS_TEXT\r\n} from 'js/constants/actionTypes';\r\nimport api from 'js/utils/api';\r\n\r\nexport function viewCreated(index) {\r\n return { type: VIEW_READY, data: index };\r\n}\r\n\r\nexport function togglePrintActive() {\r\n return { type: PRINT_ACTIVE };\r\n}\r\n\r\nexport function togglePrintAll() {\r\n return { type: PRINT_ALL };\r\n}\r\n\r\nexport function toggleReportSpinner() {\r\n return { type: TOGGLE_REPORT };\r\n}\r\n\r\nexport function setTitle(title) {\r\n return { type: SET_TITLE, data: title };\r\n}\r\n\r\nexport function toggleDownloadSpinner() {\r\n return { type: TOGGLE_DOWNLOAD };\r\n}\r\n\r\nexport function setReportStatusText (text) {\r\n return { type: SET_REPORT_STATUS_TEXT, text: text};\r\n}\r\n\r\n/**\r\n * Example Async Action\r\n */\r\nexport function getItemInfo(appid) {\r\n return dispatch => {\r\n api.getItemInfo(appid).then(response => {\r\n dispatch({ type: FETCH_ITEM_INFO, data: response.data });\r\n });\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/close.5ae24e7d.svg\";","export default __webpack_public_path__ + \"static/media/print.36be5796.svg\";","export default __webpack_public_path__ + \"static/media/download.c904fcda.svg\";","import { printURL, getPrintCover, getPrintOverlay } from 'js/config/config';\r\n\r\nconst converterEngine = (input) => { // fn BLOB => Binary => Base64 ?\r\n var uInt8Array = new Uint8Array(input),\r\n i = uInt8Array.length;\r\n var biStr = []; //new Array(i);\r\n while (i--) { biStr[i] = String.fromCharCode(uInt8Array[i]);}\r\n var base64 = window.btoa(biStr.join(''));\r\n return base64;\r\n};\r\n\r\nexport const getLegendImage = index => {\r\n return new Promise(resolve => {\r\n const legendContainers = document.querySelectorAll(\r\n `#legend-container-${index} > .esri-legend__service`\r\n );\r\n // check to see if legend is enabled or not\r\n const legend = document.getElementById(`legend-content-${index}`);\r\n const legendHidden = legend.getAttribute('class').includes('hidden');\r\n if (legendContainers.length === 0 || legendHidden) {\r\n return resolve(null);\r\n }\r\n\r\n // Select last legendContainer\r\n const legendContainer = legendContainers[legendContainers.length - 1];\r\n window.html2canvas(legendContainer).then(canvas => {\r\n return resolve(canvas.toDataURL('image/png'));\r\n }).catch(() => {\r\n return resolve(null);\r\n });\r\n });\r\n};\r\n\r\nexport const getTitleImage = index => {\r\n return new Promise(resolve => {\r\n const titleContainer = document.getElementById(`title-container-${index}`);\r\n if (!titleContainer || titleContainer.childNodes.length === 0) {\r\n return resolve(null);\r\n }\r\n window.html2canvas(titleContainer).then(canvas => {\r\n return resolve(canvas.toDataURL('image/png'));\r\n }).catch(() => {\r\n return resolve(null);\r\n });\r\n });\r\n};\r\n\r\nexport const getTableImage = tableID => {\r\n return new Promise(resolve => {\r\n const tableContainer = document.getElementById(tableID);\r\n window.html2canvas(tableContainer).then(canvas => {\r\n return resolve(canvas.toDataURL('image/png'));\r\n }).catch(() => {\r\n return resolve(null);\r\n });\r\n });\r\n};\r\n\r\n// function to load image\r\nexport const loadImage = (src) => {\r\n return new Promise(resolve => {\r\n const image = new Image();\r\n image.src = src === null ? 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' : src;\r\n image.crossOrigin = 'Anonymous';\r\n image.onload = () => {\r\n resolve(image);\r\n };\r\n image.onerror = (e) => {\r\n console.log('ERROR', e);\r\n resolve(null);\r\n };\r\n });\r\n};\r\n\r\n// function to get data URL of an image(svg, chart, table, etc.)\r\n// returns a promise\r\nexport const getImageURL = src => {\r\n return new Promise((resolve, reject) => {\r\n if (src.substr(src.length - 4, src.length - 1) === '.png'){\r\n const xhr = new XMLHttpRequest(src);\r\n xhr.open('GET', src, true); // url is the url of a PNG/JPG image.\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onload = function(){\r\n const img64 = converterEngine(this.response); // convert BLOB to base64\r\n resolve('data:image/png;base64,' + img64);\r\n return;\r\n };\r\n xhr.onerror = () => {\r\n reject(null);\r\n };\r\n xhr.send();\r\n return;\r\n }\r\n if (src.indexOf('data:image/png;base64') > -1) {\r\n resolve(src);\r\n return;\r\n }\r\n });\r\n};\r\n\r\nexport const getCoverImages = geometry => {\r\n return new Promise((resolveCover, rejectCover) => {\r\n const printExecute = `${printURL}/execute`;\r\n const formData = new FormData();\r\n formData.append('f', 'json');\r\n formData.append('Format', 'PNG32');\r\n formData.append('Layout_Template', 'MAP_ONLY');\r\n formData.append('Web_Map_as_JSON', JSON.stringify(getPrintCover(geometry)));\r\n const request = new XMLHttpRequest();\r\n request.onload = () => {\r\n const response = JSON.parse(request.response);\r\n resolveCover(response.results[0].value.url);\r\n };\r\n request.onerror = err => {\r\n console.log(`Error: ${err}`);\r\n rejectCover(err);\r\n };\r\n request.open('POST', printExecute);\r\n request.send(formData);\r\n });\r\n};\r\nexport const getOverlayImages = geometry => {\r\n return new Promise((resolveCover, rejectCover) => {\r\n const printExecute = `${printURL}/execute`;\r\n const formData = new FormData();\r\n formData.append('f', 'json');\r\n formData.append('Format', 'PNG32');\r\n formData.append('Layout_Template', 'MAP_ONLY');\r\n formData.append('Web_Map_as_JSON', JSON.stringify(getPrintOverlay(geometry.centroid)));\r\n const request = new XMLHttpRequest();\r\n request.onload = () => {\r\n const response = JSON.parse(request.response);\r\n console.log(JSON.stringify(response));\r\n if (response.results && response.results.length > 0) {\r\n resolveCover(response.results[0].value.url);\r\n }\r\n else if (response.error) {\r\n console.log(response);\r\n rejectCover(JSON.stringify(response));\r\n }\r\n };\r\n request.onerror = err => {\r\n console.log(`Error: ${err}`);\r\n rejectCover(err);\r\n };\r\n request.open('POST', printExecute);\r\n request.send(formData);\r\n });\r\n};\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABcCAMAAAALf1h1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRBNEQ4NUY5NjgzMTExRThCM0VDQ0EwMjg4Q0Q5QzVFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRBNEQ4NUZBNjgzMTExRThCM0VDQ0EwMjg4Q0Q5QzVFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REE0RDg1Rjc2ODMxMTFFOEIzRUNDQTAyODhDRDlDNUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REE0RDg1Rjg2ODMxMTFFOEIzRUNDQTAyODhDRDlDNUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz503uPvAAAABlBMVEX///////9VfPVsAAAAAnRSTlP/AOW3MEoAAAC9SURBVHja7NexDsMwCATQ4/9/ukuHSA1wKOfSSseI8VucYIyoAteoK1mlkcArpYSJUkgYMhmEKZNAGDP30EkHmEPomCrJO32acqh84uTlFVQ5o6VTTn266aKdP3eCcla+Z9X/9cw50X8uO571w/emvkEf7PMy59fuQdn9LnNUc4vMUc1jKRRbjmhevYdi0xHN859QbDui9043Ey44QTKtExzzPScohnCCYRhHVhN27NixY8eOHTt27AzjJcAAveAVBq/1q3cAAAAASUVORK5CYII=\"","import {\r\n viewCreated,\r\n togglePrintActive,\r\n togglePrintAll,\r\n getItemInfo,\r\n setTitle,\r\n toggleReportSpinner,\r\n toggleDownloadSpinner,\r\n reportStatusText\r\n} from 'js/reducers/mapReducers';\r\nimport { combineReducers } from 'redux';\r\n\r\n// This is my state model and each reducer maps to each store property\r\nexport default combineReducers({\r\n viewReady: viewCreated,\r\n itemInfo: getItemInfo,\r\n printActiveReady: togglePrintActive,\r\n printAllReady: togglePrintAll,\r\n reportReady: toggleReportSpinner,\r\n title: setTitle,\r\n downloadReady: toggleDownloadSpinner,\r\n reportStatusText: reportStatusText\r\n});\r\n","import {\r\n VIEW_READY,\r\n PRINT_ALL,\r\n PRINT_ACTIVE,\r\n FETCH_ITEM_INFO,\r\n SET_TITLE,\r\n TOGGLE_REPORT,\r\n TOGGLE_DOWNLOAD,\r\n SET_REPORT_STATUS_TEXT\r\n} from 'js/constants/actionTypes';\r\nimport { initialState } from 'js/config/config';\r\n\r\nexport function viewCreated(state = initialState.viewReady, action) {\r\n if (action.type !== VIEW_READY) {\r\n return state;\r\n } else {\r\n const tempArray = state.slice();\r\n tempArray[action.data] = true;\r\n return tempArray;\r\n }\r\n}\r\n\r\nexport function togglePrintActive(\r\n state = initialState.printActiveReady,\r\n action\r\n) {\r\n return action.type !== PRINT_ACTIVE ? state : !state;\r\n}\r\n\r\nexport function togglePrintAll(state = initialState.printAllReady, action) {\r\n return action.type !== PRINT_ALL ? state : !state;\r\n}\r\n\r\nexport function setTitle(state = initialState.title, action) {\r\n return action.type !== SET_TITLE ? state : action.data;\r\n}\r\n\r\nexport function toggleReportSpinner(state = initialState.reportReady, action) {\r\n return action.type !== TOGGLE_REPORT ? state : !state;\r\n}\r\n\r\nexport function toggleDownloadSpinner(state = initialState.reportReady, action) {\r\n return action.type !== TOGGLE_DOWNLOAD ? state : !state;\r\n}\r\n\r\n/**\r\n * Reducer for the async action\r\n */\r\nexport function getItemInfo(state = initialState.itemInfo, action) {\r\n const { type, data } = action;\r\n return type !== FETCH_ITEM_INFO ? state : data;\r\n}\r\n\r\nexport function reportStatusText (state = 'Initializing Report', action) {\r\n const { type, text } = action;\r\n return type !== SET_REPORT_STATUS_TEXT ? state : text;\r\n}\r\n","import { createStore, applyMiddleware } from \"redux\";\r\nimport { ENV_PROD } from \"js/constants/appConstants\";\r\nimport { asyncActions, logger } from \"js/utils/middleware\";\r\nimport appReducer from \"js/reducers/appReducer\";\r\n\r\nconst middleware = [asyncActions];\r\n\r\n// Remove the logger for production\r\nif (process.env.NODE_ENV !== ENV_PROD) {\r\n\tmiddleware.push(logger);\r\n} else {\r\n\t//For production supress the console.logs\r\n\tconsole.log = function () {};\r\n}\r\nexport const store = createStore(appReducer, applyMiddleware(...middleware));\r\n","const styles = {\r\n actionType: 'font-weight:bold;font-size:1.1em',\r\n stateLabel: 'color:blue;'\r\n};\r\n\r\n/**\r\n* Async middleware to support asynchronous actions\r\n*/\r\nexport const asyncActions = (api) => (next) => {\r\n return (action) => typeof action === 'function' ? action(api.dispatch) : next(action);\r\n};\r\n\r\n/**\r\n* Logging middleware to log all dispatches and updates\r\n*/\r\nexport const logger = (api) => (next) => {\r\n return (action) => {\r\n const result = next(action);\r\n console.log(`%c ${action.type}:`, styles.actionType, action);\r\n console.log('%c next state', styles.stateLabel, api.getState());\r\n return result;\r\n };\r\n};\r\n","import React, { Component } from 'react';\r\nimport close from 'images/close.svg';\r\nimport print from 'images/print.svg';\r\nimport download from 'images/download.svg';\r\nimport { loadImage } from 'js/utils/canvas';\r\nimport { togglePrintActive } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\nimport FileSaver from 'file-saver';\r\n\r\nconst uuidv4 = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & (0x3 | 0x8));\r\n return v.toString(16);\r\n });\r\n};\r\n\r\n\r\nclass MapImageActive extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n canvasSource: '',\r\n dataURL: '',\r\n type: 'dataURL'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.updateCanvas();\r\n }\r\n\r\n printImage = () => {\r\n const my_window = window.open('', uuidv4(), 'status=1,menubar=1');\r\n my_window.document.write('Print Map Window');\r\n my_window.document.write('');\r\n my_window.document.write('');\r\n my_window.document.write(this.state.printMapSVG);\r\n my_window.document.write('');\r\n my_window.print();\r\n };\r\n\r\n updateCanvas = () => {\r\n // const ctx = this.refs.canvas.getContext('2d');\r\n\r\n const promises = [];\r\n promises.push(loadImage(this.props.mapImage));\r\n promises.push(loadImage(this.props.legendImage));\r\n promises.push(loadImage(this.props.titleImage));\r\n promises.push(loadImage(this.props.logos[0]));\r\n promises.push(loadImage(this.props.logos[1]));\r\n promises.push(loadImage(this.props.logos[2]));\r\n\r\n Promise.all(promises).then(results => {\r\n const mapImage = results[0];\r\n const legendImage = results[1];\r\n const titleImage = results[2];\r\n const logo1Image = results[3];\r\n const logo2Image = results[4];\r\n const logo3Image = results[5];\r\n const imageSize = 80;\r\n const topMargin = 113;\r\n const leftMargin1 = topMargin * 3;\r\n const leftMargin2 = topMargin * 2;\r\n const leftMargin3 = topMargin;\r\n\r\n const generateScaledSvg = (scale = 1) => {\r\n var scaledCtx = new window.C2S(mapImage.width * scale, mapImage.height * scale);\r\n scaledCtx.drawImage(mapImage, 0, 0, mapImage.width * scale, mapImage.height * scale);\r\n scaledCtx.drawImage(legendImage, 0, (mapImage.height - legendImage.height) * scale, legendImage.width * scale, legendImage.height * scale);\r\n scaledCtx.drawImage(titleImage, ((mapImage.width - titleImage.width) / 2) * scale, 0);\r\n scaledCtx.drawImage(logo1Image, (mapImage.width - leftMargin1) * scale, (mapImage.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n scaledCtx.drawImage(logo2Image, (mapImage.width - leftMargin2) * scale, (mapImage.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n scaledCtx.drawImage(logo3Image, (mapImage.width - leftMargin3) * scale, (mapImage.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n return scaledCtx;\r\n };\r\n this.setState({\r\n printMapSVG: generateScaledSvg(550 / mapImage.width).getSerializedSvg()\r\n });\r\n this.setState({\r\n type: 'blob',\r\n canvasSource: new Blob([generateScaledSvg().getSerializedSvg()], {type: 'image/svg+xml;charset=utf-8'})\r\n });\r\n window.canvg(this.refs.canvas, generateScaledSvg(360 / mapImage.width).getSerializedSvg());\r\n store.dispatch(togglePrintActive());\r\n })\r\n .catch(err => {\r\n console.log('ERROR IN PRINTING ACTIVE MAP', err);\r\n });\r\n };\r\n\r\n downloadBlob = () => {\r\n FileSaver.saveAs(this.state.canvasSource, 'CriticalLoadsMapper.svg');\r\n }\r\n\r\n downloadMsBlob = () => {\r\n window.navigator.msSaveBlob(this.state.canvasSource, 'CriticalLoadsMapper.png');\r\n }\r\n\r\n render() {\r\n const { closePrintImage, open } = this.props;\r\n const { type, canvasSource } = this.state;\r\n const mapPrint = open ? (\r\n
\r\n \"\"\r\n\r\n {\r\n type === 'blob' ?\r\n \"\" : (\r\n type === 'msBlob' ?\r\n \"\" :\r\n \r\n \"\"\r\n \r\n )\r\n }\r\n \"\"\r\n\r\n \r\n
\r\n ) : null;\r\n return mapPrint;\r\n }\r\n}\r\n\r\nexport default MapImageActive;\r\n","import React, { Component } from 'react';\r\nimport close from 'images/close.svg';\r\nimport print from 'images/print.svg';\r\nimport download from 'images/download.svg';\r\nimport { loadImage } from 'js/utils/canvas';\r\nimport { togglePrintAll } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\nimport FileSaver from 'file-saver';\r\n\r\nconst uuidv4 = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & (0x3 | 0x8));\r\n return v.toString(16);\r\n });\r\n};\r\n\r\nclass MapImageAll extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n canvasSource: '',\r\n dataURL: '',\r\n type: 'dataURL'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.updateCanvas();\r\n }\r\n\r\n printImage = () => {\r\n const my_window = window.open('', uuidv4(), 'status=1');\r\n my_window.document.write('Print Map Window');\r\n my_window.document.write('');\r\n my_window.document.write('');\r\n my_window.document.write('');\r\n my_window.document.write(this.state.printMapSVG);\r\n my_window.document.write('');\r\n my_window.print();\r\n }\r\n\r\n updateCanvas = () => {\r\n // const ctx = this.refs.canvas.getContext('2d');\r\n const promises = [];\r\n const mapPromises = [];\r\n const legendPromises = [];\r\n const titlePromises = [];\r\n const logoPromises = [];\r\n\r\n for (let i = 0; i < this.props.layout; i++) {\r\n mapPromises.push(loadImage(this.props.mapImageUrls[i]));\r\n legendPromises.push(loadImage(this.props.legendImagesUrls[i]));\r\n titlePromises.push(loadImage(this.props.titleImagesUrls[i]));\r\n }\r\n this.props.logos.forEach(logo => {\r\n logoPromises.push(loadImage(logo));\r\n });\r\n\r\n promises.push(mapPromises);\r\n promises.push(legendPromises);\r\n promises.push(titlePromises);\r\n promises.push(logoPromises);\r\n\r\n Promise.all(promises.map(v => Promise.all(v))).then(results => {\r\n const mapImages = results[0];\r\n const legendImages = results[1];\r\n const titleImages = results[2];\r\n const logo1Image = results[3][0];\r\n const logo2Image = results[3][1];\r\n const logo3Image = results[3][2];\r\n const imageSize = 80;\r\n const topMargin = 113;\r\n const leftMargin1 = topMargin * 3;\r\n const leftMargin2 = topMargin * 2;\r\n const leftMargin3 = topMargin;\r\n const mapDimensions = {};\r\n const mapsToPrint = mapImages.length;\r\n switch (this.props.layout) {\r\n case 1:\r\n mapDimensions.width = mapImages[0].width;\r\n mapDimensions.height = mapImages[0].height;\r\n break;\r\n case 2:\r\n mapDimensions.width = mapImages[0].width * 2;\r\n mapDimensions.height = mapImages[0].height;\r\n break;\r\n case 3:\r\n case 4:\r\n mapDimensions.width = mapImages[0].width * 2;\r\n mapDimensions.height = mapImages[0].height * 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.refs.canvas.width = mapDimensions.width;\r\n this.refs.canvas.height = mapDimensions.height;\r\n\r\n const generateSerializedScaledSvg = (scale = 1) => {\r\n var ctx = new window.C2S(mapDimensions.width * scale, mapDimensions.height * scale);\r\n\r\n ctx.strokeStyle = '#EEEEEE';\r\n ctx.lineWidth = 5;\r\n // If printing 1 or 2 maps then do normal map processing\r\n if (mapsToPrint === 1 || mapsToPrint === 2) {\r\n let width = 0;\r\n mapImages.forEach((mapImage, index) => {\r\n ctx.drawImage(mapImage, width * scale, 0 * scale, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], width * scale, (mapImage.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n ctx.drawImage(titleImages[index], (((mapImage.width - titleImages[index].width) / 2) + width) * scale, 0 * scale);\r\n ctx.strokeRect(width * scale, 0 * scale, mapImage.width * scale, mapImage.height * scale);\r\n width += mapImage.width;\r\n });\r\n } else if (mapsToPrint === 3) {\r\n mapImages.forEach((mapImage, index) => {\r\n // For the first two images stack them on top of each other\r\n if (index === 0) {\r\n ctx.drawImage(mapImage, 0, 0, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], 0, (mapImage.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale); //legendImage.width * scale, legendImage.height * scale\r\n //ctx.drawImage(titleImages[index], (mapImage.width - titleImages[index].width) / 2, 0);\r\n ctx.strokeRect(0 * scale, 0 * scale, mapImage.width * scale, mapImage.height * scale);\r\n } else if (index === 1) {\r\n ctx.drawImage(mapImage, 0, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], 0, (mapDimensions.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], (mapImage.width - titleImages[index].width) / 2, mapImage.height);\r\n ctx.strokeRect(0 * scale, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n } else if (index === 2) {\r\n ctx.drawImage(mapImage, mapImage.width * scale, 0, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], mapImage.width * scale, (mapDimensions.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], ((mapImage.width - titleImages[index].width) / 2) + mapImage.width, 0);\r\n ctx.strokeRect(mapImage.width * scale, 0 * scale, mapImage.width * scale, mapImage.height * scale);\r\n }\r\n });\r\n } else if (mapsToPrint === 4) {\r\n mapImages.forEach((mapImage, index) => {\r\n if (index === 0) {\r\n ctx.drawImage(mapImage, 0, 0, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], 0, (mapImage.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], (mapImage.width - titleImages[index].width) / 2, 0);\r\n ctx.strokeRect(0, 0, mapImage.width * scale, mapImage.height * scale);\r\n } else if (index === 1) {\r\n ctx.drawImage(mapImage, 0, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], 0, (mapDimensions.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], (mapImage.width - titleImages[index].width) / 2, mapImage.height);\r\n ctx.strokeRect(0, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n } else if (index === 2) {\r\n ctx.drawImage(mapImage, mapImage.width * scale, 0, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], mapImage.width * scale, (mapImage.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], ((mapImage.width - titleImages[index].width) / 2) + mapImage.width, 0);\r\n ctx.strokeRect(mapImage.width * scale, 0, mapImage.width * scale, mapImage.height * scale);\r\n } else if (index === 3) {\r\n ctx.drawImage(mapImage, mapImage.width * scale, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n ctx.drawImage(legendImages[index], mapImage.width * scale, (mapDimensions.height - legendImages[index].height) * scale, legendImages[index].width * scale, legendImages[index].height * scale);\r\n //ctx.drawImage(titleImages[index], ((mapImage.width - titleImages[index].width) / 2) + mapImage.width, mapImage.height);\r\n ctx.strokeRect(mapImage.width * scale, mapImage.height * scale, mapImage.width * scale, mapImage.height * scale);\r\n }\r\n });\r\n }\r\n ctx.drawImage(logo1Image, (mapDimensions.width - leftMargin1) * scale, (mapDimensions.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n ctx.drawImage(logo2Image, (mapDimensions.width - leftMargin2) * scale, (mapDimensions.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n ctx.drawImage(logo3Image, (mapDimensions.width - leftMargin3) * scale, (mapDimensions.height - topMargin) * scale, imageSize * scale, imageSize * scale);\r\n return ctx.getSerializedSvg();\r\n };\r\n\r\n window.canvg(this.refs.canvas, generateSerializedScaledSvg(360 / mapDimensions.width));\r\n\r\n this.setState({\r\n printMapSVG: generateSerializedScaledSvg(740 / mapDimensions.width)\r\n });\r\n\r\n this.setState({\r\n type: 'blob',\r\n canvasSource: new Blob([generateSerializedScaledSvg()], {type: 'image/svg+xml;charset=utf-8'})\r\n });\r\n\r\n store.dispatch(togglePrintAll());\r\n })\r\n .catch(err => {\r\n console.log('ERROR IN PRINTING ALL MAPS', err);\r\n });\r\n }\r\n\r\n downloadBlob = () => {\r\n FileSaver.saveAs(this.state.canvasSource, 'CriticalLoadsMapper.svg');\r\n }\r\n\r\n downloadMsBlob = () => {\r\n window.navigator.msSaveBlob(this.state.canvasSource, 'CriticalLoadsMapper.png');\r\n }\r\n\r\n render() {\r\n const { type, canvasSource } = this.state;\r\n const { closePrintImage, open } = this.props;\r\n const mapPrint = open ? (\r\n
\r\n \"\"\r\n\r\n {\r\n type === 'blob' ?\r\n \"\" : (\r\n type === 'msBlob' ?\r\n \"\" :\r\n \r\n \"\"\r\n \r\n )\r\n }\r\n \"\"\r\n\r\n \r\n
\r\n ) : null;\r\n return (\r\n mapPrint\r\n );\r\n }\r\n}\r\n\r\nexport default MapImageAll;\r\n","export default __webpack_public_path__ + \"static/media/logo1.0617b7e4.png\";","export default __webpack_public_path__ + \"static/media/logo2.02febacc.png\";","export default __webpack_public_path__ + \"static/media/logo3.802443ef.png\";","import React, { Component } from \"react\";\r\nimport { sharePrint, shareURL } from \"js/config/config\";\r\nimport PrintSpinner from \"js/components/shared/PrintSpinner\";\r\nimport Menu from \"@material-ui/core/Menu\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport share from \"images/share.svg\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport { togglePrintActive, togglePrintAll } from \"js/actions/mapActions\";\r\nimport MapImageActive from \"js/components/header/MapImageActive\";\r\nimport MapImageAll from \"js/components/header/MapImageAll\";\r\nimport { store } from \"js/store\";\r\nimport { getLegendImage, getTitleImage, getImageURL } from \"js/utils/canvas\";\r\nimport shortid from \"shortid\";\r\n\r\nimport logo1 from \"images/logo1.png\";\r\nimport logo2 from \"images/logo2.png\";\r\nimport logo3 from \"images/logo3.png\";\r\n\r\nclass SharePrint extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\topen: false,\r\n\t\t\tprintImageList: null,\r\n\t\t};\r\n\t}\r\n\r\n\ttoggleShareURL = () => {\r\n\t\tthis.setState({\r\n\t\t\topen: !this.state.open,\r\n\t\t});\r\n\t\tthis.props.shareURL();\r\n\t\tconst url = window.location.href;\r\n\t\t//const url = encodeURIComponent(window.location.href);\r\n\t\tthis.props.setURL(url);\r\n\r\n\t\t/* let requestURL = '';\r\n if (window.location.origin.includes('epa.gov')) {\r\n requestURL = shareURL.gov + encodeURIComponent(window.location.href);\r\n } else {\r\n const bitly = shareURL.bitly;\r\n const origin = window.location.origin.includes('localhost')\r\n ? encodeURIComponent(shareURL.alpha)\r\n : window.location.origin + window.location.pathname;\r\n const longUrl = encodeURIComponent(window.location.hash);\r\n console.log('longUrl', longUrl)\r\n requestURL = bitly.concat(origin, longUrl);\r\n console.log('requestURL', requestURL)\r\n }\r\n const request = new XMLHttpRequest();\r\n request.onload = () => {\r\n const response = JSON.parse(request.response);\r\n const url = response.data.url\r\n ? response.data.url\r\n : response.response.data.entry[0].short_url;\r\n this.props.setURL(url);\r\n };\r\n request.onerror = err => {\r\n console.log(`Error: ${err}`);\r\n };\r\n request.open('POST', requestURL, true);\r\n request.setRequestHeader(\r\n 'Content-Type',\r\n 'application/x-www-form-urlencoded'\r\n );\r\n request.send(); */\r\n\t};\r\n\r\n\tclosePrintImage = () => {\r\n\t\tthis.setState({ printImageList: null });\r\n\t};\r\n\r\n\tprintActive = () => {\r\n\t\tconsole.log(this.props.index, getTitleImage(this.props.index));\r\n\t\tthis.closePrintImage();\r\n\t\tstore.dispatch(togglePrintActive());\r\n\t\tconst promises = [];\r\n\t\tpromises.push(this.props.mapsController.printActive(this.props.index));\r\n\t\tpromises.push(getLegendImage(this.props.index));\r\n\t\tpromises.push(getTitleImage(this.props.index));\r\n\t\tpromises.push(getImageURL(logo1));\r\n\t\tpromises.push(getImageURL(logo2));\r\n\t\tpromises.push(getImageURL(logo3));\r\n\t\tPromise.all(promises).then((results) => {\r\n\t\t\tconst mapImage = results[0].url;\r\n\t\t\tconst legendImage = results[1];\r\n\t\t\tconst titleImage = results[2];\r\n\t\t\tconst logos = [results[3], results[4], results[5]];\r\n\t\t\tthis.setState({\r\n\t\t\t\tprintImageList: (\r\n\t\t\t\t\t\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\tprintAll = () => {\r\n\t\tthis.closePrintImage();\r\n\t\tstore.dispatch(togglePrintAll());\r\n\r\n\t\tconst legendPromises = [];\r\n\t\tconst titlePromises = [];\r\n\t\tconst logoPromises = [\r\n\t\t\tgetImageURL(logo1),\r\n\t\t\tgetImageURL(logo2),\r\n\t\t\tgetImageURL(logo3),\r\n\t\t];\r\n\t\tconst promises = [];\r\n\r\n\t\tfor (let i = 0; i < this.props.layout; i++) {\r\n\t\t\tlegendPromises.push(getLegendImage(i));\r\n\t\t\ttitlePromises.push(getTitleImage(i));\r\n\t\t}\r\n\r\n\t\tpromises.push(this.props.mapsController.printAll(this.props.layout));\r\n\t\tpromises.push(legendPromises);\r\n\t\tpromises.push(titlePromises);\r\n\t\tpromises.push(logoPromises);\r\n\r\n\t\tPromise.all(promises.map((v) => Promise.all(v))).then((results) => {\r\n\t\t\tconst mapImageUrls = results[0].map((printResult) => printResult.url);\r\n\t\t\tconst legendImagesUrls = results[1];\r\n\t\t\tconst titleImagesUrls = results[2];\r\n\t\t\tconst logos = results[3];\r\n\t\t\tthis.setState({\r\n\t\t\t\tprintImageList: (\r\n\t\t\t\t\t\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\thandleRequestClose = (evt) => {\r\n\t\tthis.closePrintImage();\r\n\t\tthis.props.handleRequestClose(evt);\r\n\t};\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{sharePrint.share}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/* \r\n {sharePrint.printAll}\r\n */}\r\n\t\t\t\t\t\t{/* \r\n {sharePrint.printActive}\r\n */}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{this.state.printImageList}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\"close\"\r\n\t\t\t\t\t\tShare\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCopy link to share current map view\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default SharePrint;\r\n","import React, { Component } from 'react';\r\nimport { Facebook, Twitter, Pinterest, Email } from 'js/utils/Icons';\r\n\r\nexport default class EpaHeader extends Component {\r\n render() {\r\n const { url } = this.props;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n

\r\n \r\n US EPA\r\n \r\n

\r\n
\r\n United States Environmental Protection Agency\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n Contact CL Mapper\r\n \r\n \r\n
\r\n \r\n Share\r\n
    \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport shortid from \"shortid\";\r\n\r\nexport const panelOptions = {\r\n\tcl: {\r\n\t\ttitle: \"Critical Loads\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tA critical load (CL) is defined as “the quantitative estimate of an\r\n\t\t\t\texposure to one or more pollutants below which significant harmful\r\n\t\t\t\teffects on specified sensitive elements of the environment are not\r\n\t\t\t\texpected to occur according to present knowledge” (Nilsson and\r\n\t\t\t\tGrennfelt, 1988; CLRTAP, 2004). Critical loads are typically expressed\r\n\t\t\t\tin terms of equivalents or kilograms per hectare per year of total (wet\r\n\t\t\t\t+ dry) deposition, and can be determined for terrestrial and aquatic\r\n\t\t\t\tecosystems.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tThe CLs represented within the CL Mapper Tool are from versions 2.5,\r\n\t\t\t\t3.0, and 3.1 of the National Critical Loads Database (NCLD) hosted by\r\n\t\t\t\tthe National Atmospheric Deposition Program (NADP) Critical Loads of\r\n\t\t\t\tAtmospheric Deposition (CLAD) Science Committee (\r\n\t\t\t\t\r\n\t\t\t\t\thttp://nadp.slh.wisc.edu/committees/clad/\r\n\t\t\t\t\r\n\t\t\t\t). There are a total of six CLs in the CL Mapper Tool: Forest and\r\n\t\t\t\tAquatic Acidification from nitrogen (N) and sulfur (N) and Empirical CLs\r\n\t\t\t\tof N for Forest Ecosystems, Herbaceous Plants and Shrubs, Mycorrhizal\r\n\t\t\t\tFungi, and Herbaceous Species Richness. Aquatic Acidification CLs and\r\n\t\t\t\tEmpirical CLs for Forest Ecosystems, Herbaceous Plants and Shrubs, and\r\n\t\t\t\tMycorrhizal Fungi all come from NCLD v2.5 (Lynch et al., 2015). The\r\n\t\t\t\tForest Acidification CLs are associated with NCLD v3.0 (Lynch et al.,\r\n\t\t\t\t2017). The Empirical CLs for Herbaceous Species Richness come from NCLD\r\n\t\t\t\tv3.0 and v3.1 (Lynch et al., 2017; 2020). For the purposes of the CL\r\n\t\t\t\tMapper Tool, the Empirical CLs for Forest Ecosystems, Herbaceous Plants\r\n\t\t\t\tand Shrubs, and Mycorrhizal Fungi are represented as minimum (MIN) and\r\n\t\t\t\tmid-point (MID) values, calculated from the ranges of CL values based on\r\n\t\t\t\tPardo et al. (2011a, b) and reported in Table A3-1 of the NCLD v3.0\r\n\t\t\t\tdocumentation (Lynch et al., 2017). Empirical CLs for Herbaceous Species\r\n\t\t\t\tRichness are represented as two different sets of CLs (one for\r\n\t\t\t\tindividual plots and one for Ecoregions), with both datasets containing\r\n\t\t\t\tCLs for closed canopy (i.e., forests) and open canopy (i.e., grasslands\r\n\t\t\t\tand shrublands) systems. The Empirical CLs for Herbaceous Species\r\n\t\t\t\tRichness (plot) dataset displayed and downloadable from the Tool has\r\n\t\t\t\tfuzzed geographical coordinates due to confidentiality agreements with\r\n\t\t\t\tthe data providers. The Empirical CLs for Herbaceous Species Richness\r\n\t\t\t\t(Ecoregion) datasets are based on the plot CLs aggregated to Ecoregion\r\n\t\t\t\tLevel III or IV. For the Aquatic Acidification CLs, in situations where\r\n\t\t\t\tthere was more than one CL value for a stream reach or lake, the CLs\r\n\t\t\t\twere averaged to produce a single CL value for each water body unit. The\r\n\t\t\t\tother CLs found in the NCLD v2.5, 3.0, and 3.1, but not present in the\r\n\t\t\t\tCL Mapper Tool, are not included because either they are not national in\r\n\t\t\t\tscope (e.g., nutrient N CLs) or because they are currently being updated\r\n\t\t\t\t(e.g., Empirical CLs for lichens). Future versions of the Tool will\r\n\t\t\t\tinclude new and updated CLs, as the data become available.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tIn some cases, the spatial extent of the CL data displayed in the CL\r\n\t\t\t\tMapper Tool may not be identical to that of the data downloadable from\r\n\t\t\t\tthe Tool due to an early error in the development of the Tool. In such\r\n\t\t\t\tcases (Forest Acidification CLs and Empirical CLs for Forest Ecosystems,\r\n\t\t\t\tHerbaceous Plants and Shrubs, and Mycorrhizal Fungi), the downloadable\r\n\t\t\t\tdata are correct, internally consistent with other datasets in the Tool,\r\n\t\t\t\tand the recommended version for use. Information regarding how all CL\r\n\t\t\t\tdata were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with the datasets downloaded from the Tool. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) CL data.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tLynch, J.A., Pardo, L.H., and Huber, C. 2015. Detailed Documentation of\r\n\t\t\t\tthe National Critical Load Database (NCLD) for U.S. Critical Loads of\r\n\t\t\t\tSulfur and Nitrogen, version 2.5, National Atmospheric Deposition\r\n\t\t\t\tProgram, Illinois State Water Survey, Champaign, IL.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tLynch, J.A., Phelan, J., Pardo, L.H., McDonnell, T.C., and Clark, C.M.\r\n\t\t\t\t2017. Detailed Documentation of the National Critical Load Database\r\n\t\t\t\t(NCLD) for U.S. Critical Loads of Sulfur and Nitrogen, version 3.0,\r\n\t\t\t\tNational Atmospheric Deposition Program, Illinois State Water Survey,\r\n\t\t\t\tChampaign, IL.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tLynch, J.A., Phelan, J., Pardo, L.H., McDonnell, T.C., Clark, C.M., and\r\n\t\t\t\tBell, M.D. 2020. Detailed Documentation of the National Critical Load\r\n\t\t\t\tDatabase (NCLD) for U.S. Critical Loads of Sulfur and Nitrogen, version\r\n\t\t\t\t3.1, National Atmospheric Deposition Program, Wisconsin State Laboratory\r\n\t\t\t\tof Hygiene, Madison, WI.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\ttdep: {\r\n\t\ttitle: \"Total Deposition (TDEP)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tTDEP consists of estimates of atmospheric wet and dry deposition and is\r\n\t\t\t\tproduced by the National Atmospheric Deposition Program (NADP) Total\r\n\t\t\t\tDeposition Science Committee. TDEP deposition estimates are developed\r\n\t\t\t\tfrom an approach which combines measured (NADP and Clean Air Status and\r\n\t\t\t\tTrends Network – CASTNET) and modeled (Community Multiscale Air Quality\r\n\t\t\t\t– CMAQ) values, with the measured values being given greater weight at\r\n\t\t\t\tmonitoring station locations, and modeled data providing values for\r\n\t\t\t\tlocations in between the stations and for chemical species not measured\r\n\t\t\t\tby the monitoring networks. For more information regarding TDEP, see the\r\n\t\t\t\tTDEP website (\r\n\t\t\t\t\r\n\t\t\t\t\thttp://nadp.slh.wisc.edu/committees/tdep/\r\n\t\t\t\t\r\n\t\t\t\t), Schwede and Lear (2014), and additional information on the U.S.\r\n\t\t\t\tEnvironmental Protection Agency (EPA) CASTNET website (\r\n\t\t\t\t\r\n\t\t\t\t\thttps://gaftp.epa.gov/castnet/tdep/2021_01_grids/\r\n\t\t\t\t\r\n\t\t\t\t). In the CL Mapper Tool, TDEP version 2018.02 is the source of the\r\n\t\t\t\t2000-2018 estimates. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on these two original (source) TDEP datasets.\r\n\t\t\t\tInformation regarding how these data were modified and/or re-projected\r\n\t\t\t\tfor the CL Mapper Tool are detailed in the CL Mapper Tool Dataset\r\n\t\t\t\tInformation document which is included with the datasets downloaded from\r\n\t\t\t\tthe Tool.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tSchwede, D.B. and Lear, G.G. 2014. A novel hybrid approach for\r\n\t\t\t\testimating total deposition in the United States.{\" \"}\r\n\t\t\t\tAtmospheric Environment, 92: 207-220,\r\n\t\t\t\t
\r\n\t\t\t\tdoi:dx.doi.org/10.1016/j.atmosenv.2014.04.008.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tnadp: {\r\n\t\ttitle: \"National Atmospheric Deposition Program (NADP)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tNADP is a cooperative of federal, state, tribal, and local government\r\n\t\t\t\tagencies, universities, non-governmental organizations, and private\r\n\t\t\t\tcompanies that produces estimates of atmospheric wet deposition.\r\n\t\t\t\tNitrogen (N) and sulfur (S) deposition estimates are from National\r\n\t\t\t\tTrends Network (NTN) precipitation chemistry measurements and Inverse\r\n\t\t\t\tDistance Weighting interpolation of atmospheric concentration and\r\n\t\t\t\tprecipitation data. For information regarding NADP, see the NADP website\r\n\t\t\t\t(\r\n\t\t\t\t\r\n\t\t\t\t\thttp://nadp.slh.wisc.edu/NADP/\r\n\t\t\t\t\r\n\t\t\t\t). For information specific to the NTN network and data, see the NTN\r\n\t\t\t\twebsite (\r\n\t\t\t\t\r\n\t\t\t\t\thttp://nadp.slh.wisc.edu/NTN/\r\n\t\t\t\t\r\n\t\t\t\t). View more information about the original (source) 1985-2013 NADP data\r\n\t\t\t\tused in the CL Mapper Tool at{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\thttp://nadp.slh.wisc.edu/data/mapProcess.aspx\r\n\t\t\t\t\r\n\t\t\t\t. Information regarding how these data were modified and/or re-projected\r\n\t\t\t\tfor the CL Mapper Tool are detailed in the CL Mapper Tool Dataset\r\n\t\t\t\tInformation document which is included with the datasets downloaded from\r\n\t\t\t\tthe Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tcmaq: {\r\n\t\ttitle: \"Community Multiscale Air Quality (CMAQ)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tCMAQ is a model developed by the U.S. Environmental Protection Agency\r\n\t\t\t\t(EPA) to simulate air quality and atmospheric wet and dry deposition in\r\n\t\t\t\tthe United States. CMAQ combines current knowledge in atmospheric\r\n\t\t\t\tscience and air quality modeling with multi-processor computing\r\n\t\t\t\ttechniques in an open-source framework to deliver fast, technically\r\n\t\t\t\tsound estimates of ozone, particulates, toxics, and acid deposition (wet\r\n\t\t\t\tand dry nitrogen (N) and sulfur (S) deposition). For more information\r\n\t\t\t\tregarding the CMAQ model, see the CMAS website (\r\n\t\t\t\t\r\n\t\t\t\t\thttps://www.cmascenter.org/cmaq/\r\n\t\t\t\t\r\n\t\t\t\t). The version of the CMAQ model (v.5.0.2, includes bi-directional NH\r\n\t\t\t\t3 air-surface exchange) used for the 2002-2011 deposition\r\n\t\t\t\testimates in the CL Mapper Tool are described in Bash et al. (2013).\r\n\t\t\t\tView{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor the original (source) CMAQ data. Information regarding how these\r\n\t\t\t\tdata were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with the datasets downloaded from the Tool.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tBash, J.O., Cooter, E.J., Dennis, R.L., Walker, J.T. and Pleim, J.E.\r\n\t\t\t\t2013. Evaluation of a regional air-quality model with bidirectional NH\r\n\t\t\t\t3 exchange coupled to an agroecosystem model. Biogeosciences,\r\n\t\t\t\t10: 1635, doi:10.5194/bg-10-1635-2013.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tcmip5first: {\r\n\t\ttitle: \"Coupled Model Intercomparison Project Phase 5 (CMIP5) (1850-2000)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tCMIP is a framework for coupled global ocean-atmosphere general\r\n\t\t\t\tcirculation models (GCMs) (\r\n\t\t\t\t\r\n\t\t\t\t\thttps://esgf-node.llnl.gov/projects/esgf-llnl/\r\n\t\t\t\t\r\n\t\t\t\t). Phase 5 of CMIP is focused on improving representation of climate and\r\n\t\t\t\tconsists of a set of climate model experiments. The historical\r\n\t\t\t\t(1850-2000) total (wet+dry) nitrogen (N) and sulfur (S) deposition\r\n\t\t\t\testimates included in the CL Mapper Tool were developed using RETRO\r\n\t\t\t\t(1960–2000) and EDGAR-HYDE (1890–1990) emissions and version 3.5 of the\r\n\t\t\t\tglobal Community Atmosphere Model (CAM) (Lamarque et al., 2010).\r\n\t\t\t\tInformation regarding how these data were modified and/or re-projected\r\n\t\t\t\tfor the CL Mapper Tool are detailed in the CL Mapper Tool Dataset\r\n\t\t\t\tInformation document which is included with the datasets downloaded from\r\n\t\t\t\tthe Tool.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tLamarque, J.-F., Bond, T.C., Eyring, V., Granier, C., Heil, A., Klimont,\r\n\t\t\t\tZ., Lee, D., Liousse, C., Mieville, A., Owen, B., Schultz, M.G.,\r\n\t\t\t\tShindell, D., Smith, S.J., Stehfest, E., Van Aardenne, J., Cooper, O.R.,\r\n\t\t\t\tKainuma, M., Mahowald, N., McConnell, J.R., Naik, V., Riahi, K., and van\r\n\t\t\t\tVuuren. D.P. 2010. Historical (1850-2000) gridded anthropogenic and\r\n\t\t\t\tbiomass burning emissions of reactive gases and aerosols: methodology\r\n\t\t\t\tand application. Atmospheric Chemistry and Physics, 10: 7017-7039.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tcmip5second: {\r\n\t\ttitle: \"Coupled Model Intercomparison Project Phase 5 (CMIP5) (2001-2100)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tCMIP is a framework for coupled global ocean-atmosphere general\r\n\t\t\t\tcirculation models (GCMs) (\r\n\t\t\t\t\r\n\t\t\t\t\thttps://esgf-node.llnl.gov/projects/esgf-llnl/\r\n\t\t\t\t\r\n\t\t\t\t). Phase 5 of CMIP is focused on improving representation of climate and\r\n\t\t\t\tconsists of a set of climate model experiments. The future (2001-2100)\r\n\t\t\t\ttotal (wet+dry) nitrogen (N) and sulfur (S) deposition estimates\r\n\t\t\t\tincluded in the CL Mapper Tool are for two future Intergovernmental\r\n\t\t\t\tPanel on Climate Change (IPCC) Annual Report 5 (AR5) Representative\r\n\t\t\t\tConcentration Pathways (RCPs), and were developed using the emissions\r\n\t\t\t\tfor for RCP 4.5 and 8.5 and version 3.5 of the global Community\r\n\t\t\t\tAtmosphere Model (CAM). For more information regarding the IPCC RCP\r\n\t\t\t\tscenarios, see the following website (\r\n\t\t\t\t\r\n\t\t\t\t\thttp://sedac.ipcc-data.org/ddc/ar5_scenario_process/RCPs.html\r\n\t\t\t\t\r\n\t\t\t\t). For more information regarding the 2001-2100 deposition data for the\r\n\t\t\t\ttwo RCP scenarios used in the CL Mapper Tool, see Lamarque et al.\r\n\t\t\t\t(2011). Information regarding how these data were modified and/or\r\n\t\t\t\tre-projected for the CL Mapper Tool are detailed in the CL Mapper Tool\r\n\t\t\t\tDataset Information document which is included with the datasets\r\n\t\t\t\tdownloaded from the Tool.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tLamarque, J. F., Kyle, G.P., Meinshausen, M., Riahi, K., Smith, S.J.,\r\n\t\t\t\tvan Vuuren, D.P., Conley, A.J., and Vitt, F. 2011. Global and regional\r\n\t\t\t\tevolution of short-lived radiatively-active gases and aerosols in the\r\n\t\t\t\tRepresentative Concentration Pathways. Climatic Change, 109: 191-212.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tclEx: {\r\n\t\ttitle: \"Critical Load Exceedance\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tCritical load exceedance (Ex) refers to a condition where nitrogen (N)\r\n\t\t\t\tand/or sulfur (S) deposition (D) equals or exceeds the critical load\r\n\t\t\t\t(CL), and the sensitive element of the environment is anticipated to be\r\n\t\t\t\tnegatively impacted, according to current knowledge. The exceedance is\r\n\t\t\t\tcalculated by subtracting the CL from the deposition (i.e., Ex = D -\r\n\t\t\t\tCL). Nitrogen deposition is used to determine exceedances of the\r\n\t\t\t\tEmpirical CLs for Forest Ecosystems, Herbaceous Plants and Shrubs,\r\n\t\t\t\tMycorrhizal Fungi, and Herbaceous Species Richness. Nitrogen and/or S\r\n\t\t\t\tcan be used to determine the exceedance of Forest and Aquatic\r\n\t\t\t\tAcidification CLs (i.e., Ex = N deposition - CLmaxN; Ex = N+S deposition\r\n\t\t\t\t- CLmaxN; or Ex = S deposition – CLmaxS). However, in situations where N\r\n\t\t\t\tdeposition is less than the combined amount of N immobilized in the\r\n\t\t\t\tsoil, denitrified, and taken up by trees in managed forest ecosystems\r\n\t\t\t\t(i.e., N deposition {\"<\"} CLminN), only S deposition can result in an\r\n\t\t\t\texceedance (i.e., Ex = S deposition - CLmaxS).\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tWithin the CL Mapper Tool, exceedances are calculated by subtracting CLs\r\n\t\t\t\tfrom 3-Year or 10-Year Average N and/or S deposition estimates. Averages\r\n\t\t\t\tare used to minimize the influences of inter-annual variation in\r\n\t\t\t\tdeposition on the determination of CL exceedances. Exceedances are\r\n\t\t\t\tcalculated for all possible CL–deposition combinations within the CL\r\n\t\t\t\tMapper Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\teco: {\r\n\t\ttitle: \"Ecoregions\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tEcoregions are geographical areas where ecosystems and ecosystem\r\n\t\t\t\tattributes are similar. The U.S. Environmental Protection Agency (EPA)\r\n\t\t\t\tEcoregion dataset is derived from Omernik (1987), with ecoregions being\r\n\t\t\t\tbased on similarities in geology, landforms, soils, vegetation, climate,\r\n\t\t\t\tland use, wildlife, and hydrology. Ecoregions in North America are\r\n\t\t\t\trepresented at four levels of resolution (Levels I-IV). The following\r\n\t\t\t\tdescribes the number of ecoregions for each level:\r\n\t\t\t

,\r\n\t\t\t
    \r\n\t\t\t\t
  • Level I - 12 ecoregions within the continental U.S.
  • \r\n\t\t\t\t
  • Level II - 25 ecoregions within the continental U.S.
  • \r\n\t\t\t\t
  • Level III -105 ecoregions within the continental U.S.
  • \r\n\t\t\t\t
  • Level IV - 967 ecoregions within the conterminous U.S.
  • \r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\tOnly Level I-III ecoregion overlays are included in the CL Mapper Tool.\r\n\t\t\t\tFor more information about the EPA Ecoregion classification system and\r\n\t\t\t\tdataset, see{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\thttps://www.epa.gov/eco-research/ecoregions\r\n\t\t\t\t\r\n\t\t\t\t. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor the original (source) Ecoregion data. Information regarding how\r\n\t\t\t\tthese data were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with the datasets downloaded from the Tool.\r\n\t\t\t

,\r\n\t\t\t

\r\n\t\t\t\tOmernik, J.M. 1987. Ecoregions of the Conterminous United States.{\" \"}\r\n\t\t\t\tAnnals of the Association of American Geographers, 77:118-125\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tclass1: {\r\n\t\ttitle: \"Class I Areas\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tA Class I area is a geographic area recognized by the Clean Air Act\r\n\t\t\t\tAmendments of 1977 as being of the highest environmental quality and\r\n\t\t\t\trequiring maximum protection from new sources of air pollution. Class I\r\n\t\t\t\tareas are areas of special national or regional scenic, recreational, or\r\n\t\t\t\thistoric value for which the Prevention of Significant Deterioration\r\n\t\t\t\t(PSD) regulations provide special protection. Class I areas are managed\r\n\t\t\t\tby the National Park Service (NPS), U.S. Fish and Wildlife Service\r\n\t\t\t\t(FWS), USDA Forest Service (USFS), and several Native American Tribes.\r\n\t\t\t\tFor more information about Class I Areas, see{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\thttps://www.epa.gov/visibility/list-156-mandatory-class-i-federal-areas\r\n\t\t\t\t\r\n\t\t\t\t. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor the original (source) Class I data. Information regarding how these\r\n\t\t\t\tdata were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with the datasets downloaded from the Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\tfedAdmin: {\r\n\t\ttitle: \"Federal Administrative Areas\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tFederal Administrative Areas represent lands (with official boundaries)\r\n\t\t\t\tmanaged by a federal agency, state agency, or Tribal government. Forest\r\n\t\t\t\tService Administrative Areas represent official national forest and\r\n\t\t\t\tgrassland proclamation boundaries as designated by Congress (boundaries\r\n\t\t\t\twithin which the FS is permitted to purchase land, including private\r\n\t\t\t\tinholdings). National Park Service Administrative Areas represent\r\n\t\t\t\tofficial national park boundaries, which are updated when these\r\n\t\t\t\tboundaries are altered by Congress. Fish and Wildlife Service\r\n\t\t\t\tAdministrative Areas represent lands and waters in which the FWS has a\r\n\t\t\t\treal estate interest, including private inholdings. Bureau of Land\r\n\t\t\t\tManagement Administrative Areas represent land areas and office\r\n\t\t\t\tlocations owned and managed by BLM. Bureau of Indian Affairs\r\n\t\t\t\tAdministrative Areas represent areas owned and/or managed by Tribal\r\n\t\t\t\tgovernments. The following lists the sources of data (used in the CL\r\n\t\t\t\tMapper Tool) for the lands administered by federal agencies. Only USFS,\r\n\t\t\t\tNPS, and FWS Wilderness Areas are currently included and fully\r\n\t\t\t\toperational within the Tool.\r\n\t\t\t

,\r\n\t\t\t
    \r\n\t\t\t\t
  • \r\n\t\t\t\t\tUSFS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttp://data.fs.usda.gov/geodata/edw/datasets.php\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tNPS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttps://irma.nps.gov/DataStore\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tFWS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttps://fws.maps.arcgis.com/home/item.html?id=0a30eaf43328427db8750282d67f0005\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\tInformation regarding how these data were configured and formatted for\r\n\t\t\t\tthe CL Mapper Tool are detailed in the CL Mapper Tool Dataset\r\n\t\t\t\tInformation document which is included with the datasets downloaded from\r\n\t\t\t\tthe Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\twild: {\r\n\t\ttitle: \"Wilderness Areas\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tA Wilderness Area is defined by the Wilderness Act as “an area where the\r\n\t\t\t\tearth and its community of life are untrammeled by man, where man\r\n\t\t\t\thimself is a visitor who does not remain” and “an area of undeveloped\r\n\t\t\t\tFederal land retaining its primeval character and influence without\r\n\t\t\t\tpermanent improvements or human habitation, which is protected and\r\n\t\t\t\tmanaged so as to preserve its natural conditions…\". For the complete\r\n\t\t\t\tdefinition of Wilderness, see Section 2(c) of the{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tWilderness Act\r\n\t\t\t\t\r\n\t\t\t\t. The following lists the sources of data (used in the CL Mapper Tool)\r\n\t\t\t\tfor the Wilderness Areas administered by federal agencies. Only USFS,\r\n\t\t\t\tNPS, and FWS Wilderness Areas are currently included and fully\r\n\t\t\t\toperational within the Tool.\r\n\t\t\t

,\r\n\t\t\t
    \r\n\t\t\t\t
  • \r\n\t\t\t\t\tUSFS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttp://data.fs.usda.gov/geodata/edw/datasets.php\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tNPS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttps://irma.nps.gov/DataStore\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tFWS -{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\thttps://fws.maps.arcgis.com/home/item.html?id=31c41fcca6d34d3fa9924de38651a317\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\tInformation regarding how these data were modified and/or re-projected\r\n\t\t\t\tfor the CL Mapper Tool are detailed in the CL Mapper Tool Dataset\r\n\t\t\t\tInformation document which is included with the datasets downloaded from\r\n\t\t\t\tthe Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texCont_1km: {\r\n\t\ttitle: \"Conterminous U.S. – 1-km (ContUS1)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe Conterminous U.S. data layers consist of the conterminous U.S. land\r\n\t\t\t\tarea converted into raster format at two different spatial scales with\r\n\t\t\t\tstandardized cell sizes, projection, and datum. These data layers are\r\n\t\t\t\tnot displayed in the Tool, but are used in the calculation of Total Land\r\n\t\t\t\tUnit Area (ha) for the Summary Tables available for each U.S. Class I,\r\n\t\t\t\tFederal Administrative, and Wilderness Area displayed in the CL Mapper\r\n\t\t\t\tTool. The standardized raster formats consist of 2.338-km and 1-km grid\r\n\t\t\t\tcells using the same projection and datum as NADP. The 1-km grid cell\r\n\t\t\t\tdata layer is used for the Total Land Unit Area (ha) calculations for\r\n\t\t\t\tForest Acidification critical loads (CLs), and the 2.338-km grid cells\r\n\t\t\t\tdata layer is used for the calculations for Empirical CLs for Forest\r\n\t\t\t\tEcosystems, Herbaceous Plants and Shrubs, Mycorrhizal Fungi, and\r\n\t\t\t\tHerbaceous Species Richness (Ecoregion). View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) dataset used to develop\r\n\t\t\t\tthe Conterminous U.S. data layers. Additional information regarding how\r\n\t\t\t\tthese data were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with datasets downloaded from the Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texCont_23km: {\r\n\t\ttitle: \"Conterminous U.S. – 2.338-km (ContUS2.338)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe Conterminous U.S. data layers consist of the conterminous U.S. land\r\n\t\t\t\tarea converted into raster format at two different spatial scales with\r\n\t\t\t\tstandardized cell sizes, projection, and datum. These data layers are\r\n\t\t\t\tnot displayed in the Tool, but are used in the calculation of Total Land\r\n\t\t\t\tUnit Area (ha) for the Summary Tables available for each U.S. Class I,\r\n\t\t\t\tFederal Administrative, and Wilderness Area displayed in the CL Mapper\r\n\t\t\t\tTool. The standardized raster formats consist of 2.338-km and 1-km grid\r\n\t\t\t\tcells using the same projection and datum as NADP. The 1-km grid cell\r\n\t\t\t\tdata layer is used for the Total Land Unit Area (ha) calculations for\r\n\t\t\t\tForest Acidification critical loads (CLs), and the 2.338-km grid cells\r\n\t\t\t\tdata layer is used for the calculations for Empirical CLs for Forest\r\n\t\t\t\tEcosystems, Herbaceous Plants and Shrubs, Mycorrhizal Fungi, and\r\n\t\t\t\tHerbaceous Species Richness (Ecoregion). View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) dataset used to develop\r\n\t\t\t\tthe Conterminous U.S. data layers. Additional information regarding how\r\n\t\t\t\tthese data were modified and/or re-projected for the CL Mapper Tool are\r\n\t\t\t\tdetailed in the CL Mapper Tool Dataset Information document which is\r\n\t\t\t\tincluded with datasets downloaded from the Tool.\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texContMask_1km: {\r\n\t\ttitle: \"Conterminous U.S. with Land-Cover Mask – 1-km (ContUSmask1)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe four Conterminous U.S. with Land-Cover Mask data layers\r\n\t\t\t\t(ContUSmask1, ContUSmask2.338, ContUSmask2.338hsreroc, and\r\n\t\t\t\tContUSmask2.338hsrercc) consist of the conterminous U.S. land area minus\r\n\t\t\t\tcells of land cover(s) not suitable for/applicable to terrestrial\r\n\t\t\t\tcritical loads (CLs) converted into raster format at two spatial scales\r\n\t\t\t\twith standardized cell sizes, projection, and datum. These data layers\r\n\t\t\t\tare not displayed in the Tool, but are used to remove non-suitable\r\n\t\t\t\t1.0-km and 2.338-km cells from the terrestrial CL datasets and used in\r\n\t\t\t\tthe calculation of Total Land Area (ha) for the Summary Tables available\r\n\t\t\t\tfor each U.S. Class I, Federal Administrative, and Wilderness Area\r\n\t\t\t\tdisplayed in the CL Mapper Tool. Land covers not suitable for\r\n\t\t\t\tterrestrial CLs are represented by a combination of land covers from the\r\n\t\t\t\t2011 National Land Cover Dataset (NLCD) and waterbodies identified by\r\n\t\t\t\tthe 2005 National Atlas Streams and Waterbodies of the United States.\r\n\t\t\t\tNon-suitable land covers included in all four masks are NLCD cells\r\n\t\t\t\tclassified as water, perennial ice/snow, developed (open space, low\r\n\t\t\t\tintensity, medium intensity, and high intensity), barren land,\r\n\t\t\t\tpasture/hay, or cultivated crops), and waterbodies identified by the\r\n\t\t\t\tNational Atlas as lake, lake intermittent, reservoir, reservoir\r\n\t\t\t\tintermittent, or stream. Additional NLCD land covers added to the\r\n\t\t\t\tContUSmask2.338hseroc mask include {\"<\"}5% of the 2.338-km cell area\r\n\t\t\t\tclassified as shrub/scrub or grassland/herbaceous. Additional NLCD land\r\n\t\t\t\tcovers added to the ContUSmask2.338hsrercc mask include {\"<\"}5% of the\r\n\t\t\t\t2.338-km cell area classified as deciduous forest, evergreen forest, or\r\n\t\t\t\tmixed forest. The ContUSmask1 data layer is applied to the Forest\r\n\t\t\t\tAcidification CL dataset to “mask” land covers not applicable to the\r\n\t\t\t\tCLs, and is used to calculate Total Land Area (ha) for Forest\r\n\t\t\t\tAcidification CLs in the Summary Tables. The ContUSmask2.338 data layer\r\n\t\t\t\tis applied to the Empirical CLs for Forest Ecosystems, Herbaceous Plants\r\n\t\t\t\tand Shrubs, and Mycorrhizal Fungi to “mask” land covers not suitable for\r\n\t\t\t\tthe CLs, and is used to estimate Total Land Area (ha) for the three CLs\r\n\t\t\t\tin the Summary Tables. The ContUSmask2.338hsreroc and\r\n\t\t\t\tContUSmask2.338hsrercc data layers are applied to the Empirical CLs for\r\n\t\t\t\tHerbaceous Species Richness – Open Canopy (Ecoregion) and Herbaceous\r\n\t\t\t\tSpecies Richness – Closed Canopy (Ecoregion), respectively, to remove\r\n\t\t\t\tland covers not applicable to the CLs, and are used to estimate Total\r\n\t\t\t\tLand Area (ha) for the two CLs in the Summary Tables. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) datasets used to develop\r\n\t\t\t\tthe Conterminous U.S. with Land-Cover Mask data layers. Additional\r\n\t\t\t\tinformation regarding how the original datasets were modified and/or\r\n\t\t\t\tre-projected for the CL Mapper Tool are detailed in the CL Mapper Tool\r\n\t\t\t\tDataset Information document which is included with datasets downloaded\r\n\t\t\t\tfrom the Tool.\r\n\t\t\t

,\r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t1 There are minor differences between the “non-suitable\r\n\t\t\t\t\tland cover” masks applied the Empirical CL for Herbaceous Species\r\n\t\t\t\t\tRichness (Ecoregion) and the Empirical CLs for Forest Ecosystems,\r\n\t\t\t\t\tHerbaceous Plants and Shrubs, and Mycorrhizal Fungi, due to\r\n\t\t\t\t\tdifferences in the processing of land cover classifications. However,\r\n\t\t\t\t\tthis difference accounts for {\"<\"}5% change in masked vs. non-masked\r\n\t\t\t\t\tdesignation of 2.338-km grid cells and is not expected to impact the\r\n\t\t\t\t\trange and extent of critical load and exceedance values in federal\r\n\t\t\t\t\tland units.\r\n\t\t\t\t\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texContMask_23km: {\r\n\t\ttitle:\r\n\t\t\t\"Conterminous U.S. with Land-Cover Mask – 2.338-km (ContUSmask2.338)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe four Conterminous U.S. with Land-Cover Mask data layers\r\n\t\t\t\t(ContUSmask1, ContUSmask2.338, ContUSmask2.338hsreroc, and\r\n\t\t\t\tContUSmask2.338hsrercc) consist of the conterminous U.S. land area minus\r\n\t\t\t\tcells of land cover(s) not suitable for/applicable to terrestrial\r\n\t\t\t\tcritical loads (CLs) converted into raster format at two spatial scales\r\n\t\t\t\twith standardized cell sizes, projection, and datum. These data layers\r\n\t\t\t\tare not displayed in the Tool, but are used to remove non-suitable\r\n\t\t\t\t1.0-km and 2.338-km cells from the terrestrial CL datasets and used in\r\n\t\t\t\tthe calculation of Total Land Area (ha) for the Summary Tables available\r\n\t\t\t\tfor each U.S. Class I, Federal Administrative, and Wilderness Area\r\n\t\t\t\tdisplayed in the CL Mapper Tool. Land covers not suitable for\r\n\t\t\t\tterrestrial CLs are represented by a combination of land covers from the\r\n\t\t\t\t2011 National Land Cover Dataset (NLCD) and waterbodies identified by\r\n\t\t\t\tthe 2005 National Atlas Streams and Waterbodies of the United States.\r\n\t\t\t\tNon-suitable land covers included in all four masks are NLCD cells\r\n\t\t\t\tclassified as water, perennial ice/snow, developed (open space, low\r\n\t\t\t\tintensity, medium intensity, and high intensity), barren land,\r\n\t\t\t\tpasture/hay, or cultivated crops), and waterbodies identified by the\r\n\t\t\t\tNational Atlas as lake, lake intermittent, reservoir, reservoir\r\n\t\t\t\tintermittent, or stream. Additional NLCD land covers added to the\r\n\t\t\t\tContUSmask2.338hseroc mask include {\"<\"}5% of the 2.338-km cell area\r\n\t\t\t\tclassified as shrub/scrub or grassland/herbaceous. Additional NLCD land\r\n\t\t\t\tcovers added to the ContUSmask2.338hsrercc mask include {\"<\"}5% of the\r\n\t\t\t\t2.338-km cell area classified as deciduous forest, evergreen forest, or\r\n\t\t\t\tmixed forest. The ContUSmask1 data layer is applied to the Forest\r\n\t\t\t\tAcidification CL dataset to “mask” land covers not applicable to the\r\n\t\t\t\tCLs, and is used to calculate Total Land Area (ha) for Forest\r\n\t\t\t\tAcidification CLs in the Summary Tables. The ContUSmask2.338 data layer\r\n\t\t\t\tis applied to the Empirical CLs for Forest Ecosystems, Herbaceous Plants\r\n\t\t\t\tand Shrubs, and Mycorrhizal Fungi to “mask” land covers not suitable for\r\n\t\t\t\tthe CLs, and is used to estimate Total Land Area (ha) for the three CLs\r\n\t\t\t\tin the Summary Tables. The ContUSmask2.338hsreroc and\r\n\t\t\t\tContUSmask2.338hsrercc data layers are applied to the Empirical CLs for\r\n\t\t\t\tHerbaceous Species Richness – Open Canopy (Ecoregion) and Herbaceous\r\n\t\t\t\tSpecies Richness – Closed Canopy (Ecoregion), respectively, to remove\r\n\t\t\t\tland covers not applicable to the CLs, and are used to estimate Total\r\n\t\t\t\tLand Area (ha) for the two CLs in the Summary Tables. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) datasets used to develop\r\n\t\t\t\tthe Conterminous U.S. with Land-Cover Mask data layers. Additional\r\n\t\t\t\tinformation regarding how the original datasets were modified and/or\r\n\t\t\t\tre-projected for the CL Mapper Tool are detailed in the CL Mapper Tool\r\n\t\t\t\tDataset Information document which is included with datasets downloaded\r\n\t\t\t\tfrom the Tool.\r\n\t\t\t

,\r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t1 There are minor differences between the “non-suitable\r\n\t\t\t\t\tland cover” masks applied the Empirical CL for Herbaceous Species\r\n\t\t\t\t\tRichness (Ecoregion) and the Empirical CLs for Forest Ecosystems,\r\n\t\t\t\t\tHerbaceous Plants and Shrubs, and Mycorrhizal Fungi, due to\r\n\t\t\t\t\tdifferences in the processing of land cover classifications. However,\r\n\t\t\t\t\tthis difference accounts for {\"<\"}5% change in masked vs. non-masked\r\n\t\t\t\t\tdesignation of 2.338-km grid cells and is not expected to impact the\r\n\t\t\t\t\trange and extent of critical load and exceedance values in federal\r\n\t\t\t\t\tland units.\r\n\t\t\t\t\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texContMask_23kmhsreroc: {\r\n\t\ttitle:\r\n\t\t\t\"Conterminous U.S. with Land-Cover Mask for Herbaceous Species Richness – Open Canopy (Ecoregion) Critical Loads – 2.338-km (ContUSmask2.338hsreroc)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe four Conterminous U.S. with Land-Cover Mask data layers\r\n\t\t\t\t(ContUSmask1, ContUSmask2.338, ContUSmask2.338hsreroc, and\r\n\t\t\t\tContUSmask2.338hsrercc) consist of the conterminous U.S. land area minus\r\n\t\t\t\tcells of land cover(s) not suitable for/applicable to terrestrial\r\n\t\t\t\tcritical loads (CLs) converted into raster format at two spatial scales\r\n\t\t\t\twith standardized cell sizes, projection, and datum. These data layers\r\n\t\t\t\tare not displayed in the Tool, but are used to remove non-suitable\r\n\t\t\t\t1.0-km and 2.338-km cells from the terrestrial CL datasets and used in\r\n\t\t\t\tthe calculation of Total Land Area (ha) for the Summary Tables available\r\n\t\t\t\tfor each U.S. Class I, Federal Administrative, and Wilderness Area\r\n\t\t\t\tdisplayed in the CL Mapper Tool. Land covers not suitable for\r\n\t\t\t\tterrestrial CLs are represented by a combination of land covers from the\r\n\t\t\t\t2011 National Land Cover Dataset (NLCD) and waterbodies identified by\r\n\t\t\t\tthe 2005 National Atlas Streams and Waterbodies of the United States.\r\n\t\t\t\tNon-suitable land covers included in all four masks are NLCD cells\r\n\t\t\t\tclassified as water, perennial ice/snow, developed (open space, low\r\n\t\t\t\tintensity, medium intensity, and high intensity), barren land,\r\n\t\t\t\tpasture/hay, or cultivated crops), and waterbodies identified by the\r\n\t\t\t\tNational Atlas as lake, lake intermittent, reservoir, reservoir\r\n\t\t\t\tintermittent, or stream. Additional NLCD land covers added to the\r\n\t\t\t\tContUSmask2.338hseroc mask include {\"<\"}5% of the 2.338-km cell area\r\n\t\t\t\tclassified as shrub/scrub or grassland/herbaceous. Additional NLCD land\r\n\t\t\t\tcovers added to the ContUSmask2.338hsrercc mask include {\"<\"}5% of the\r\n\t\t\t\t2.338-km cell area classified as deciduous forest, evergreen forest, or\r\n\t\t\t\tmixed forest. The ContUSmask1 data layer is applied to the Forest\r\n\t\t\t\tAcidification CL dataset to “mask” land covers not applicable to the\r\n\t\t\t\tCLs, and is used to calculate Total Land Area (ha) for Forest\r\n\t\t\t\tAcidification CLs in the Summary Tables. The ContUSmask2.338 data layer\r\n\t\t\t\tis applied to the Empirical CLs for Forest Ecosystems, Herbaceous Plants\r\n\t\t\t\tand Shrubs, and Mycorrhizal Fungi to “mask” land covers not suitable for\r\n\t\t\t\tthe CLs, and is used to estimate Total Land Area (ha) for the three CLs\r\n\t\t\t\tin the Summary Tables. The ContUSmask2.338hsreroc and\r\n\t\t\t\tContUSmask2.338hsrercc data layers are applied to the Empirical CLs for\r\n\t\t\t\tHerbaceous Species Richness – Open Canopy (Ecoregion) and Herbaceous\r\n\t\t\t\tSpecies Richness – Closed Canopy (Ecoregion), respectively, to remove\r\n\t\t\t\tland covers not applicable to the CLs, and are used to estimate Total\r\n\t\t\t\tLand Area (ha) for the two CLs in the Summary Tables. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) datasets used to develop\r\n\t\t\t\tthe Conterminous U.S. with Land-Cover Mask data layers. Additional\r\n\t\t\t\tinformation regarding how the original datasets were modified and/or\r\n\t\t\t\tre-projected for the CL Mapper Tool are detailed in the CL Mapper Tool\r\n\t\t\t\tDataset Information document which is included with datasets downloaded\r\n\t\t\t\tfrom the Tool.\r\n\t\t\t

,\r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t1 There are minor differences between the “non-suitable\r\n\t\t\t\t\tland cover” masks applied the Empirical CL for Herbaceous Species\r\n\t\t\t\t\tRichness (Ecoregion) and the Empirical CLs for Forest Ecosystems,\r\n\t\t\t\t\tHerbaceous Plants and Shrubs, and Mycorrhizal Fungi, due to\r\n\t\t\t\t\tdifferences in the processing of land cover classifications. However,\r\n\t\t\t\t\tthis difference accounts for {\"<\"}5% change in masked vs. non-masked\r\n\t\t\t\t\tdesignation of 2.338-km grid cells and is not expected to impact the\r\n\t\t\t\t\trange and extent of critical load and exceedance values in federal\r\n\t\t\t\t\tland units.\r\n\t\t\t\t\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n\texContMask_23kmhsrercc: {\r\n\t\ttitle:\r\n\t\t\t\"Conterminous U.S. with Land-Cover Mask for Herbaceous Species Richness – Closed Canopy (Ecoregion) Critical Loads – 2.338-km (ContUSmask2.338hsrercc)\",\r\n\t\tbody: [\r\n\t\t\t

\r\n\t\t\t\tThe four Conterminous U.S. with Land-Cover Mask data layers\r\n\t\t\t\t(ContUSmask1, ContUSmask2.338, ContUSmask2.338hsreroc, and\r\n\t\t\t\tContUSmask2.338hsrercc) consist of the conterminous U.S. land area minus\r\n\t\t\t\tcells of land cover(s) not suitable for/applicable to terrestrial\r\n\t\t\t\tcritical loads (CLs) converted into raster format at two spatial scales\r\n\t\t\t\twith standardized cell sizes, projection, and datum. These data layers\r\n\t\t\t\tare not displayed in the Tool, but are used to remove non-suitable\r\n\t\t\t\t1.0-km and 2.338-km cells from the terrestrial CL datasets and used in\r\n\t\t\t\tthe calculation of Total Land Area (ha) for the Summary Tables available\r\n\t\t\t\tfor each U.S. Class I, Federal Administrative, and Wilderness Area\r\n\t\t\t\tdisplayed in the CL Mapper Tool. Land covers not suitable for\r\n\t\t\t\tterrestrial CLs are represented by a combination of land covers from the\r\n\t\t\t\t2011 National Land Cover Dataset (NLCD) and waterbodies identified by\r\n\t\t\t\tthe 2005 National Atlas Streams and Waterbodies of the United States.\r\n\t\t\t\tNon-suitable land covers included in all four masks are NLCD cells\r\n\t\t\t\tclassified as water, perennial ice/snow, developed (open space, low\r\n\t\t\t\tintensity, medium intensity, and high intensity), barren land,\r\n\t\t\t\tpasture/hay, or cultivated crops), and waterbodies identified by the\r\n\t\t\t\tNational Atlas as lake, lake intermittent, reservoir, reservoir\r\n\t\t\t\tintermittent, or stream. Additional NLCD land covers added to the\r\n\t\t\t\tContUSmask2.338hseroc mask include {\"<\"}5% of the 2.338-km cell area\r\n\t\t\t\tclassified as shrub/scrub or grassland/herbaceous. Additional NLCD land\r\n\t\t\t\tcovers added to the ContUSmask2.338hsrercc mask include {\"<\"}5% of the\r\n\t\t\t\t2.338-km cell area classified as deciduous forest, evergreen forest, or\r\n\t\t\t\tmixed forest. The ContUSmask1 data layer is applied to the Forest\r\n\t\t\t\tAcidification CL dataset to “mask” land covers not applicable to the\r\n\t\t\t\tCLs, and is used to calculate Total Land Area (ha) for Forest\r\n\t\t\t\tAcidification CLs in the Summary Tables. The ContUSmask2.338 data layer\r\n\t\t\t\tis applied to the Empirical CLs for Forest Ecosystems, Herbaceous Plants\r\n\t\t\t\tand Shrubs, and Mycorrhizal Fungi to “mask” land covers not suitable for\r\n\t\t\t\tthe CLs, and is used to estimate Total Land Area (ha) for the three CLs\r\n\t\t\t\tin the Summary Tables. The ContUSmask2.338hsreroc and\r\n\t\t\t\tContUSmask2.338hsrercc data layers are applied to the Empirical CLs for\r\n\t\t\t\tHerbaceous Species Richness – Open Canopy (Ecoregion) and Herbaceous\r\n\t\t\t\tSpecies Richness – Closed Canopy (Ecoregion), respectively, to remove\r\n\t\t\t\tland covers not applicable to the CLs, and are used to estimate Total\r\n\t\t\t\tLand Area (ha) for the two CLs in the Summary Tables. View{\" \"}\r\n\t\t\t\t\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t{\" \"}\r\n\t\t\t\tfor more information on the original (source) datasets used to develop\r\n\t\t\t\tthe Conterminous U.S. with Land-Cover Mask data layers. Additional\r\n\t\t\t\tinformation regarding how the original datasets were modified and/or\r\n\t\t\t\tre-projected for the CL Mapper Tool are detailed in the CL Mapper Tool\r\n\t\t\t\tDataset Information document which is included with datasets downloaded\r\n\t\t\t\tfrom the Tool.\r\n\t\t\t

,\r\n\t\t\t
,\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t1 There are minor differences between the “non-suitable\r\n\t\t\t\t\tland cover” masks applied the Empirical CL for Herbaceous Species\r\n\t\t\t\t\tRichness (Ecoregion) and the Empirical CLs for Forest Ecosystems,\r\n\t\t\t\t\tHerbaceous Plants and Shrubs, and Mycorrhizal Fungi, due to\r\n\t\t\t\t\tdifferences in the processing of land cover classifications. However,\r\n\t\t\t\t\tthis difference accounts for {\"<\"}5% change in masked vs. non-masked\r\n\t\t\t\t\tdesignation of 2.338-km grid cells and is not expected to impact the\r\n\t\t\t\t\trange and extent of critical load and exceedance values in federal\r\n\t\t\t\t\tland units.\r\n\t\t\t\t\r\n\t\t\t

,\r\n\t\t],\r\n\t},\r\n};\r\n\r\nexport const downloadData = [\r\n {\r\n id: \"cl\",\r\n text: \"Critical Loads\",\r\n indent: false,\r\n readMore: true,\r\n download: true,\r\n fileName: \"CL_NCLD.zip\",\r\n },\r\n {\r\n id: \"dep\",\r\n text: \"Deposition\",\r\n indent: false,\r\n readMore: false,\r\n download: true,\r\n },\r\n {\r\n id: \"tdep\",\r\n text: \"TDEP\",\r\n indent: true,\r\n readMore: true,\r\n download: false,\r\n },\r\n /* {\r\n id: \"nadp\",\r\n text: \"NADP\",\r\n indent: true,\r\n readMore: true,\r\n download: false,\r\n }, */\r\n {\r\n id: \"cmaq\",\r\n text: \"CMAQ\",\r\n indent: true,\r\n readMore: true,\r\n download: false,\r\n },\r\n {\r\n id: \"cmip5first\",\r\n text: \"CMIP5 (1850-2000)\",\r\n indent: true,\r\n readMore: true,\r\n download: false,\r\n },\r\n {\r\n id: \"cmip5second\",\r\n text: \"CMIP5 (2001-2100)\",\r\n indent: true,\r\n readMore: true,\r\n download: false,\r\n },\r\n {\r\n id: \"clEx\",\r\n text: \"Critical Load Exceedance\",\r\n indent: false,\r\n readMore: true,\r\n download: true,\r\n },\r\n {\r\n id: \"overlays\",\r\n text: \"Overlays\",\r\n indent: false,\r\n readMore: false,\r\n download: false,\r\n },\r\n {\r\n id: \"eco\",\r\n text: \"Level 1-3 Ecoregions\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"Level_1-3_Ecoregions.zip\",\r\n },\r\n {\r\n id: \"class1\",\r\n text: \"Class 1 Areas\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"Class_I_Areas.zip\",\r\n },\r\n {\r\n id: \"fedAdmin\",\r\n text: \"Federal Administrative Areas\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"Federal_Administrative_Areas.zip\",\r\n },\r\n {\r\n id: \"wild\",\r\n text: \"Wilderness Areas\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"Wilderness_Areas.zip\",\r\n },\r\n {\r\n id: \"exceedance\",\r\n text: \"Overlays (Not Displayed)\",\r\n indent: false,\r\n readMore: false,\r\n download: false,\r\n },\r\n {\r\n id: \"exCont_1km\",\r\n text: \"Conterminous U.S.\",\r\n subText: \"1-km (ContUS1)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUS1.zip\",\r\n },\r\n {\r\n id: \"exCont_23km\",\r\n text: \"Conterminous U.S.\",\r\n subText: \"2.338-km (ContUS2.338)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUS2.338.zip\",\r\n },\r\n {\r\n id: \"exContMask_1km\",\r\n text: \"Conterminous U.S. with Land-Cover Mask\",\r\n subText: \"1-km (ContUSmask1)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUSmask1.zip\",\r\n },\r\n {\r\n id: \"exContMask_23km\",\r\n text: \"Conterminous U.S. with Land-Cover Mask\",\r\n subText: \"2.338-km (ContUSmask2.338)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUSmask2.338.zip\",\r\n },\r\n {\r\n id: \"exContMask_23kmhsreroc\",\r\n text:\r\n \"Conterminous U.S. with Land-Cover Mask For Herbaceous Species Richness – Open Canopy (Ecoregion) Critical Loads\",\r\n subText: \"2.338-km (ContUSmask2.338hsreroc)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUSmask2.338hsreroc.zip\",\r\n },\r\n {\r\n id: \"exContMask_23kmhsrercc\",\r\n text:\r\n \"Conterminous U.S. with Land-Cover Mask For Herbaceous Species Richness – Closed Canopy (Ecoregion) Critical Loads\",\r\n subText: \"2.338-km (ContUSmask2.338hsrercc)\",\r\n indent: true,\r\n readMore: true,\r\n download: true,\r\n fileName: \"ContUSmask2.338hsrercc.zip\",\r\n },\r\n];\r\n","import React from 'react';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\n\r\nconst YearSelection = (props) => {\r\n return (\r\n
\r\n
\r\n \r\n TDEP\r\n CMAQ\r\n {/* NADP */}\r\n CMIP5 (1850-2000)\r\n {/* CMIP5 RCP 2.6 (2001-2100) */}\r\n CMIP5 RCP 4.5 (2001-2100)\r\n {/* CMIP5 RCP 6.0 (2001-2100) */}\r\n CMIP5 RCP 8.5 (2001-2100)\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default YearSelection;\r\n","// import FileSaver from 'file-saver';\r\n// import JSZip from 'jszip';\r\n\r\nexport const roundDecimal = number => number ? Math.round(number * 100) / 100 : number;\r\nexport const getAverage = array => {\r\n return array.length === 0\r\n ? 0\r\n : roundDecimal(\r\n array.reduce((a, b) => {\r\n return a + b;\r\n }, 0) / array.length\r\n );\r\n};\r\nexport const getPercent = (areaArr, landcountArr, unit) => {\r\n const area = areaArr ? areaArr.find(v => v.cl === unit) : null;\r\n const landcount = landcountArr.find(v => v.cl === unit);\r\n\r\n if (area && landcount && (area.value !== undefined) && (landcount.value !== undefined)) {\r\n return (\r\n roundDecimal((area.value / landcount.value) * 100)\r\n );\r\n }\r\n};\r\n\r\nexport const getDepositionData = (depURLs, title, name, variable, depositionYear, depositionRange) => {\r\n return new Promise((resolve, reject) => {\r\n const chartQuery = depURLs.chart.replace('{NAME}', name).replace('{VARIABLE}', variable);\r\n const tableQuery = depURLs.table.replace('{NAME}', name).replace('{VARIABLE}', variable).replace('{YEAR}', depositionYear);\r\n const classification = title.replace(/ /g, '');\r\n const chartURL = depURLs[`${classification}-${depositionRange}`] + chartQuery;\r\n const tableURL = depURLs[`${classification}-${depositionRange}`] + tableQuery;\r\n Promise.all([fetch(chartURL), fetch(tableURL)])\r\n .then(responses => {\r\n return Promise.all(responses.map(response => response.json()));\r\n })\r\n .then(responses => {\r\n const kgChartData = responses[0].features.filter(feature => feature.attributes.unit === 'kg');\r\n const eqChartData = responses[0].features.filter(feature => feature.attributes.unit === 'eq');\r\n const listDepStatistics = [\"count\", \"max\", \"mean\",\"min\",\"percentile5\",\"percentile50\",\"percentile95\",\"std\" ];\r\n var chartData = [];\r\n\r\n \r\n \r\n listDepStatistics.forEach(statistic => {\r\n chartData = chartData.concat(eqChartData.map(feature => { \r\n\r\n const kgVal = kgChartData.filter(val => val.attributes.dep === feature.attributes.dep)[0];\r\n\r\n return {\r\n value: feature.attributes[statistic],\r\n dep: feature.attributes.dep,\r\n statistic: statistic,\r\n variable: feature.attributes.variable,\r\n year: feature.attributes.year,\r\n kgVal: kgVal ? kgVal.attributes[statistic] : null\r\n };\r\n\r\n }));\r\n\r\n });\r\n\r\n console.log(\"eqChartData: \");\r\n console.log(eqChartData);\r\n console.log(\"kgChartData: \");\r\n console.log(kgChartData);\r\n console.log(\"chartData: \");\r\n console.log(chartData);\r\n\r\n const kgTableData = responses[1].features.filter(feature => feature.attributes.unit === 'kg');\r\n const eqTableData = responses[1].features.filter(feature => feature.attributes.unit === 'eq');\r\n\r\n var tableData = [];\r\n\r\n listDepStatistics.forEach(statistic => {\r\n tableData = tableData.concat(eqTableData.map(feature => {\r\n\r\n const kgVal = kgTableData.filter(val => val.attributes.dep === feature.attributes.dep)[0];\r\n\r\n return {\r\n value: feature.attributes[statistic],\r\n dep: feature.attributes.dep,\r\n statistic: statistic,\r\n variable: feature.attributes.variable,\r\n year: feature.attributes.year,\r\n kgVal: kgVal ? kgVal.attributes[statistic] : null\r\n };\r\n }));\r\n\r\n });\r\n resolve({\r\n chartData,\r\n tableData\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n reject(err);\r\n });\r\n });\r\n};\r\n\r\n\r\nexport const getExceedanceData = (exURLs, title, name, variable, ex, exceedanceYear, exceedanceRange) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n const chartQuery = exURLs.chart.replace('{NAME}', name).replace('{VARIABLE}', variable).replace('{EX}', ex);\r\n const classification = title.replace(/ /g, '');\r\n const url = exURLs[`${classification}-${exceedanceRange}`] + chartQuery;\r\n\r\n Promise.all([fetch(url)])\r\n .then(responses => {\r\n return Promise.all(responses.map(response => response.json()));\r\n })\r\n .then(responses => {\r\n console.log(\"getExceedanceData:\");\r\n console.log(responses[0].features);\r\n // const meanDataEq = responses[0].features.filter(feature => feature.attributes.statistic === 'mean' && feature.attributes.unit === 'eq');\r\n // const percentile5DataEq = responses[0].features.filter(feature => feature.attributes.statistic === 'percentile5' && feature.attributes.unit === 'eq');\r\n // const percentile95DataEq = responses[0].features.filter(feature => feature.attributes.statistic === 'percentile95' && feature.attributes.unit === 'eq');\r\n\r\n // const meanDataKg = responses[0].features.filter(feature => feature.attributes.statistic === 'mean' && feature.attributes.unit === 'kg');\r\n // const percentile5DataKg = responses[0].features.filter(feature => feature.attributes.statistic === 'percentile5' && feature.attributes.unit === 'kg');\r\n // const percentile95DataKg = responses[0].features.filter(feature => feature.attributes.statistic === 'percentile95' && feature.attributes.unit === 'kg');\r\n\r\n // const extentData = responses[0].features.filter(feature => feature.attributes.statistic === 'extent' && feature.attributes.unit === 'eq');\r\n const eqData = responses[0].features.filter(feature => feature.attributes.unit === 'eq');\r\n \r\n const kgData = responses[0].features.filter(feature => feature.attributes.unit === 'kg'); \r\n \r\n const mean = eqData.map(v => {\r\n const kgVal = kgData.filter(feature => feature.attributes.year === v.attributes.year && feature.attributes.dep === v.attributes.dep)[0];\r\n return {\r\n value: v.attributes.mean,\r\n ex: v.attributes.ex,\r\n dep: v.attributes.dep,\r\n statistic: \"mean\",\r\n unit: v.attributes.unit,\r\n variable: v.attributes.variable,\r\n year: v.attributes.year,\r\n kgVal: kgVal ? kgVal.attributes.mean : null\r\n };\r\n });\r\n const percentile5 = eqData.map(v => {\r\n const kgVal = kgData.filter(feature => feature.attributes.year === v.attributes.year && feature.attributes.dep === v.attributes.dep)[0];\r\n return {\r\n value: v.attributes.percentile5,\r\n ex: v.attributes.ex,\r\n dep: v.attributes.dep,\r\n statistic: \"percentile5\",\r\n unit: v.attributes.unit,\r\n variable: v.attributes.variable,\r\n year: v.attributes.year,\r\n kgVal: kgVal ? kgVal.attributes.percentile5 : null\r\n };\r\n });\r\n const percentile95 = eqData.map(v => {\r\n const kgVal = kgData.filter(feature => feature.attributes.year === v.attributes.year && feature.attributes.dep === v.attributes.dep)[0];\r\n return {\r\n value: v.attributes.percentile95,\r\n ex: v.attributes.ex,\r\n dep: v.attributes.dep,\r\n statistic: \"percentile95\",\r\n unit: v.attributes.unit,\r\n variable: v.attributes.variable,\r\n year: v.attributes.year,\r\n kgVal: kgVal ? kgVal.attributes.percentile95 : null\r\n };\r\n });\r\n\r\n //Just use eq data for extent (RTI comment)\r\n const extent = eqData.map(v => {\r\n return { //RTI updated (removed * 100) as extent is now stored in Profile Tables as percent no need to * 100\r\n value: v.attributes.extent !== null ? v.attributes.extent : null, // Extent values are represented as percentages\r\n ex: v.attributes.ex,\r\n dep: v.attributes.dep,\r\n statistic: \"extent\",\r\n unit: v.attributes.unit,\r\n variable: v.attributes.variable,\r\n year: v.attributes.year\r\n };\r\n });\r\n resolve({\r\n mean,\r\n percentile5,\r\n percentile95,\r\n extent\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n reject(err);\r\n });\r\n });\r\n};\r\n\r\nexport const downloadAll = (files) => {\r\n if (files.length) {\r\n files.forEach((file) => {\r\n const link = document.createElement('a');\r\n link.style.display = 'none';\r\n document.body.appendChild(link);\r\n link.setAttribute('href', file.url);\r\n link.setAttribute('download', file.name);\r\n link.setAttribute('target', '_blank');\r\n link.click();\r\n document.body.removeChild(link);\r\n });\r\n }\r\n};\r\n","import React, { Component } from \"react\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport Button from \"@material-ui/core/Button\";\r\n// import Radio from '@material-ui/core/Radio';\r\n// import RadioGroup from '@material-ui/core/RadioGroup';\r\n// import FormControl from '@material-ui/core/FormControl';\r\n// import FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport YearSelection from \"js/components/header/YearSelection\";\r\nimport { downloadAll } from \"js/utils/helper\";\r\n\r\nclass CLDownloadPanel extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tdepValue: \"tdep\",\r\n\t\t\tcriticalLoad: \"aa\",\r\n\t\t\tyearSelection: \"3yr\",\r\n\t\t};\r\n\t}\r\n\r\n handleCLChange = (event) => {\r\n const val = event.target.value;\r\n this.setState({ criticalLoad: val });\r\n };\r\n\r\n\thandleChange = (event) => {\r\n\t\tconst val = event.target.value;\r\n\t\tthis.setState({ [event.target.name]: val });\r\n\t\tlet yr = \"3yr\";\r\n\t\tif (val.indexOf(\"cmip5\") > -1) {\r\n\t\t\tyr = \"10yr\";\r\n\t\t}\r\n\t\tthis.setState({ yearSelection: yr });\r\n\t};\r\n\r\n\thandleRadioChange = (event, value) => {\r\n\t\tthis.setState({ yearSelection: value });\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { yearSelection, depValue, criticalLoad } = this.state;\r\n\t\tconst fileName =\r\n\t\t\tcriticalLoad === \"aa\"\r\n\t\t\t\t? `Ex_${yearSelection}_${criticalLoad}_${depValue}.zip`\r\n\t\t\t\t: `Ex_${yearSelection}_${criticalLoad}_${depValue}.zip`;\r\n\r\n\t\tconst files = [\r\n\t\t\t{\r\n\t\t\t\tname: `${fileName}`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/downloads/${fileName}`,\r\n\t\t\t\ttype: \"zip\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: `CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\ttype: \"pdf\",\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Deposition
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{/* \r\n \r\n }\r\n label=\"Individual Years\"\r\n />\r\n }\r\n label=\"Three-Year Average\"\r\n />\r\n \r\n */}\r\n\t\t\t\t\t\t\t
Select One:
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
Critical Load
\r\n\t\t\t\t\t\t
Select One:
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tAquatic Acidification\r\n\t\t\t\t\t\t\t\tForest Acidification\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tForest Ecosystems (Minimum CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tForest Ecosystems (Midpoint CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tHerbaceous Plants and Shrubs (Minimum CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tHerbaceous Plants and Shrubs (Midpoint CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tHerbaceous Species Richness - plot\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tHerbaceous Species Richness - Ecoregion\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMycorrhizal Fungi (Minimum CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMycorrhizal Fungi (Midpoint CL)\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t downloadAll(files)}\r\n\t\t\t\t\t\ttype=\"button\">\r\n\t\t\t\t\t\tClick here to download selected dataset(s)\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default CLDownloadPanel;\r\n","import React, { Component } from \"react\";\r\nimport Button from \"@material-ui/core/Button\";\r\n// import Radio from \"@material-ui/core/Radio\";\r\n// import RadioGroup from \"@material-ui/core/RadioGroup\";\r\n// import FormControl from \"@material-ui/core/FormControl\";\r\n// import FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport YearSelection from \"js/components/header/YearSelection\";\r\nimport { downloadAll } from \"js/utils/helper\";\r\n\r\nclass DepDownloadPanel extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tdepValue: \"tdep\",\r\n\t\t\tcriticalLoad: \"aa\",\r\n\t\t\tyearSelection: \"3yr\",\r\n\t\t};\r\n\t}\r\n\r\n\thandleChange = (event) => {\r\n\t\tconst val = event.target.value;\r\n\t\tthis.setState({ [event.target.name]: val });\r\n\t\tlet yr = \"3yr\";\r\n\t\tif (val.indexOf(\"cmip5\") > -1) {\r\n\t\t\tyr = \"10yr\";\r\n\t\t}\r\n\t\tthis.setState({ yearSelection: yr });\r\n\t};\r\n\r\n\thandleRadioChange = (event, value) => {\r\n\t\tthis.setState({ yearSelection: value });\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst { depValue, yearSelection } = this.state;\r\n\t\tconst fileName = `Dep_${yearSelection}_${depValue}.zip`;\r\n\r\n\t\tconst files = [\r\n\t\t\t{\r\n\t\t\t\tname: `${fileName}`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/downloads/${fileName}`,\r\n\t\t\t\ttype: \"zip\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: `CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\ttype: \"pdf\",\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{/* \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Individual Years\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Three-Year Average\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t
Select One:
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t downloadAll(files)}\r\n\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\tclassName=\"white-text-button button\"\r\n\t\t\t\t\t\ttype=\"button\">\r\n\t\t\t\t\t\tClick here to download selected dataset(s)\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default DepDownloadPanel;\r\n","export default __webpack_public_path__ + \"static/media/downloadDataIcon.367979b9.svg\";","import React, { Component } from 'react';\r\nimport { downloadData, panelOptions } from 'js/config/DownloadPanelOptions';\r\nimport CLDownloadPanel from 'js/components/header/CLDownloadPanel';\r\nimport DepDownloadPanel from 'js/components/header/DepDownloadPanel';\r\nimport shortid from 'shortid';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport Button from '@material-ui/core/Button';\r\nimport { downloadAll } from 'js/utils/helper';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport downloadDataIcon from 'images/downloadDataIcon.svg';\r\n\r\nclass DownloadData extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n id: 'cl',\r\n openReadMore: false,\r\n openclEx: false,\r\n opendep: false\r\n };\r\n }\r\n\r\n handleRequestClose = evt => {\r\n this.props.handleRequestClose(evt);\r\n };\r\n\r\n createList = list => {\r\n const files = [\r\n\t\t\t{\r\n\t\t\t\tname: `${list.fileName}`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/downloads/${list.fileName}`,\r\n\t\t\t\ttype: \"zip\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tname: `CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\turl: process.env.PUBLIC_URL + `/documents/CL_Mapper_Tool_Data_Info.pdf`,\r\n\t\t\t\ttype: \"pdf\",\r\n\t\t\t},\r\n\t\t];\r\n return (\r\n
  • \r\n
    \r\n {list.text}\r\n {list.subText === undefined ? null : (\r\n
    \r\n {list.subText}\r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n list.readMore ?\r\n
    this.setReadMore(list.id)}>\r\n Read More\r\n
    :
    \r\n }\r\n { list.download && (list.id === 'clEx' || list.id === 'dep') ?\r\n : null }\r\n { list.download && list.id !== 'clEx' && list.id !== 'dep' ?\r\n : null }\r\n { !list.download ?
    : null}\r\n
    \r\n
  • \r\n );\r\n };\r\n\r\n setReadMore = id => {\r\n this.setState({ id: id });\r\n this.toggleReadMore();\r\n };\r\n\r\n toggleReadMore = () => {\r\n this.setState({\r\n openReadMore: !this.state.openReadMore\r\n });\r\n };\r\n\r\n toggleDownloadPanel = (id) => {\r\n this.setState({\r\n [`open${id}`]: !this.state[`open${id}`]\r\n });\r\n };\r\n\r\n render() {\r\n const { id, openclEx, opendep, openReadMore } = this.state;\r\n const downloadDataList = downloadData.map(this.createList);\r\n const content = panelOptions[id];\r\n return (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
      {downloadDataList}
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t* Download includes data and metadata\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{content.title}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{content.body}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t this.toggleDownloadPanel(\"clEx\")}\r\n\t\t\t\t\tclassName=\"download-options-dialog\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    Critical Load Exceedance Download
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tThe critical load (CL) exceedance datasets in the CL Mapper Tool\r\n\t\t\t\t\t\t\tare calculated by comparing CLs against 3-Year or 10-Year Average\r\n\t\t\t\t\t\t\tdeposition (labelled for the end year of the 3- or 10-year\r\n\t\t\t\t\t\t\tperiod). Select the desired deposition type and CL dataset in the\r\n\t\t\t\t\t\t\tdrop-down arrow tabs below. Each downloadable file contains CL\r\n\t\t\t\t\t\t\texceedances for all relevant forms of deposition (N, S, and/or\r\n\t\t\t\t\t\t\tN+S) and all available years for the selected CL and deposition\r\n\t\t\t\t\t\t\tdatasets.\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t this.toggleDownloadPanel(\"dep\")}\r\n\t\t\t\t\tclassName=\"download-options-dialog\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    Deposition Download
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\tThe deposition datasets used in the CL Mapper Tool are available\r\n\t\t\t\t\t\t\tfor download as 3-Year (CMAQ and TDEP) or 10-Year (CMIP5) Average\r\n\t\t\t\t\t\t\tdatasets (labelled for the end year of the 3- or 10-year period).\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n }\r\n}\r\n\r\nexport default DownloadData;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpOverview extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tOverview\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tAtmospheric deposition of nitrogen (N) and sulfur (S) from air\r\n\t\t\t\t\t\tpollution is a major stressor to natural ecosystems, often leading\r\n\t\t\t\t\t\tto acidification and eutrophication of both terrestrial and aquatic\r\n\t\t\t\t\t\tecosystems. The source of this deposition is predominantly from\r\n\t\t\t\t\t\temissions from fossil fuel combustion and industrialized\r\n\t\t\t\t\t\tagriculture. The amount of deposition, below which harmful effects\r\n\t\t\t\t\t\tdo not occur according to present knowledge, is known as the{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tcritical load\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t. Although the United States (US) has seen large improvements in air\r\n\t\t\t\t\t\tquality (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\thttps://gispub.epa.gov/air/trendsreport/2018/\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t] and reductions in deposition since the enactment of the Clean Air\r\n\t\t\t\t\t\tAct Amendments of 1990, there are still many regions where the\r\n\t\t\t\t\t\tcritical loads for various terrestrial and aquatic ecosystems are\r\n\t\t\t\t\t\texceeded.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe Critical Loads Mapper Tool is a joint project supported by the\r\n\t\t\t\t\t\tUS Environmental Protection Agency (EPA), USDA Forest Service\r\n\t\t\t\t\t\t(USFS), and the National Park Service (NPS) to make data and\r\n\t\t\t\t\t\tinformation available on the effects from atmospheric deposition of\r\n\t\t\t\t\t\tnitrogen (N) and sulfur (S). The CL Mapper Tool is an interactive\r\n\t\t\t\t\t\tmapping tool that enables decision makers, researchers, and the\r\n\t\t\t\t\t\tpublic to easily access information for the conterminous US on:\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\t

      \r\n\t\t\t\t\t\t\t
        \r\n\t\t\t\t\t\t\t\t1) atmospheric deposition of N and S (estimates through time are\r\n\t\t\t\t\t\t\t\tprovided for several different air quality models),\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t
        \r\n\t\t\t\t\t\t\t\t2) critical loads for terrestrial and aquatic ecosystems (from\r\n\t\t\t\t\t\t\t\tthe National Atmospheric Deposition Program’s National Critical\r\n\t\t\t\t\t\t\t\tLoads Database), and\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t
        \r\n\t\t\t\t\t\t\t\t3) critical load exceedances (defined as the deposition minus\r\n\t\t\t\t\t\t\t\tthe critical load).\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tAreas where atmospheric deposition levels are higher than the\r\n\t\t\t\t\t\tcritical load (i.e., positive exceedances) indicate potential\r\n\t\t\t\t\t\tecological vulnerability to atmospheric deposition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe CL Mapper Tool helps users better understand local and regional\r\n\t\t\t\t\t\tvulnerability to atmospheric deposition and how pollution levels and\r\n\t\t\t\t\t\tecosystem vulnerability may have changed through time. A description\r\n\t\t\t\t\t\tof the Tool and how to use it is provided in a{\" \"}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\tthis.props.toggleHowTo();\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tHow To\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\tvideo. Additional information on air pollution, deposition, critical\r\n\t\t\t\t\t\tloads, and critical load exceedances, and how these concepts are\r\n\t\t\t\t\t\tused to support decision making can be found at{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUSFS Critical Load Portal\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t, the{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tNPS’s Nitrogen and Sulfur Pollution in Parks\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t, the{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tEPA’s Integrated Science Assessment of the secondary standards of\r\n\t\t\t\t\t\t\tNOx and SOx\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t,{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUSFS Critical Load Videos\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t, and the{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tNational Atmospheric Deposition Program (NADP) Critical Loads of\r\n\t\t\t\t\t\t\tAtmospheric Deposition (CLAD)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe CL Mapper Tool is continually being updated with new data, and\r\n\t\t\t\t\t\tthe version of the Tool is updated with each significant revision.\r\n\t\t\t\t\t\tThe current version of the CL Mapper Tool is v3, and the preferred\r\n\t\t\t\t\t\tcitation for this version of the Tool is:\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tCL Mapper Tool. US Environmental Protection Agency, USDA Forest\r\n\t\t\t\t\t\tService, and National Park Service, Washington, DC. CL Mapper Tool\r\n\t\t\t\t\t\tversion 3. https://clmapper.epa.gov/.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tBy using the CL Mapper Tool, you acknowledge the limitations\r\n\t\t\t\t\t\toutlined in our{\" \"}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\tthis.props.toggleDisclaimer();\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tdisclaimer.\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpOverview;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpDisclaimer extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tDisclaimer\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe CL Mapper Tool was developed in partnership by the US\r\n\t\t\t\t\t\tEnvironmental Protection Agency (EPA), the USDA Forest Service\r\n\t\t\t\t\t\t(USFS), and the National Park Service (NPS). The information\r\n\t\t\t\t\t\tcontained in the CL Mapper Tool was compiled from peer reviewed and\r\n\t\t\t\t\t\tnational and state sources that are described in more detail within\r\n\t\t\t\t\t\tthe Tool.{\" \"}\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tIt is the responsibility of the user to read and evaluate dataset\r\n\t\t\t\t\t\tlimitations, restrictions, and intended use. To the best of our\r\n\t\t\t\t\t\tknowledge, the data and information on this website are accurate,\r\n\t\t\t\t\t\tbut no warranty expressed or implied is made regarding the accuracy\r\n\t\t\t\t\t\tor utility of the data for general or scientific purposes, nor shall\r\n\t\t\t\t\t\tthe act of distribution constitute any such warranty. All modeled\r\n\t\t\t\t\t\tgeographic data are, by their nature, imperfect and the data\r\n\t\t\t\t\t\tprovided in the CL Mapper Tool website should not be taken as\r\n\t\t\t\t\t\tabsolute truth, but as the best approximation of that truth based on\r\n\t\t\t\t\t\tbest available data. The EPA, USFS, and NPS (and contractors and any\r\n\t\t\t\t\t\tother organizations cooperating and/or working with EPA, USFS, and\r\n\t\t\t\t\t\tNPS) do not assume any responsibility for damages or other\r\n\t\t\t\t\t\tliabilities related to the accuracy, availability, use, or misuse of\r\n\t\t\t\t\t\tthe information provided on this website. EPA, USFS, and NPS reserve\r\n\t\t\t\t\t\tthe right to change information at any time without public notice.\r\n\t\t\t\t\t\tAny errors or omissions should be reported using{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tContact CL Mapper\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\ton the top of the home page of the CL Mapper Tool.\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpDisclaimer;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpHowTo extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tHow to Use the Tool\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe CL Mapper Tool offers a variety of different functions and\r\n\t\t\t\t\t\toptions to display, summarize, and download data for the\r\n\t\t\t\t\t\tconterminous United States. Use of Google Chrome, Microsoft Edge, or\r\n\t\t\t\t\t\tFirefox browser is recommended for optimal performance of the Tool.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe below videos provide descriptions of the contents and structure\r\n\t\t\t\t\t\tof the CL Mapper Tool, and step-by-step guidance on how to use the\r\n\t\t\t\t\t\tkey functions of the Tool.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tVideos (coming soon)\r\n\t\t\t\t\t\t

      \r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t { alert(\"Videos not yet available.\"); e.preventDefault(); }}\r\n\t\t\t\t\t\t\t\t\tdisabled=\"disabled\"\r\n\t\t\t\t\t\t\t\t\ttitle=\"Videos not yet available.\">\r\n\t\t\t\t\t\t\t\t\tHow to visualize data on the CL Mapper\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\talert(\"Videos not yet available.\");\r\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdisabled=\"disabled\"\r\n\t\t\t\t\t\t\t\t\ttitle=\"Videos not yet available.\">\r\n\t\t\t\t\t\t\t\t\tHow to download summary tables on the CL Mapper\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\talert(\"Videos not yet available.\");\r\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdisabled=\"disabled\"\r\n\t\t\t\t\t\t\t\t\ttitle=\"Videos not yet available.\">\r\n\t\t\t\t\t\t\t\t\tHow to access data on the CL Mapper for custom analyses\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tIf any difficulties or errors are experienced with the CL Mapper\r\n\t\t\t\t\t\tTool and/or if you have suggested improvements for the Tool, please\r\n\t\t\t\t\t\treport using{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tContact CL Mapper\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\ton the top of the CL Mapper Tool home page.\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpHowTo;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpDatasets extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tDatasets\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tDatasets displayed, summarized, and downloadable from the CL Mapper\r\n\t\t\t\t\t\tTool include critical loads, deposition, and geospatial overlays\r\n\t\t\t\t\t\tfrom published or federal agency sources, and critical load\r\n\t\t\t\t\t\texceedances calculated for the Tool. The critical load data are from\r\n\t\t\t\t\t\tthe National Atmospheric Deposition Program (NADP) Critical Loads of\r\n\t\t\t\t\t\tAtmospheric Deposition (CLAD) National Critical Load Database\r\n\t\t\t\t\t\t(NCLD). Deposition data are from five different sources. Geospatial\r\n\t\t\t\t\t\toverlays are datalayers that delineate state, county, ecoregion,\r\n\t\t\t\t\t\tfederal land, and landcover boundaries within the conterminous\r\n\t\t\t\t\t\tUnited States. Critical load exceedances were calculated for the CL\r\n\t\t\t\t\t\tMapper Tool as the differences between deposition and critical\r\n\t\t\t\t\t\tloads. For the purposes of the CL Mapper Tool, all datasets\r\n\t\t\t\t\t\tdisplayed and downloadable from the Tool were converted from their\r\n\t\t\t\t\t\toriginal, source format to a standardized projection and datum. For\r\n\t\t\t\t\t\tmore information about the individual datasets, see the links below.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tDetailed descriptions of the data in the CL Mapper Tool and how\r\n\t\t\t\t\t\tthese data were calculated, modified, and/or re-projected for the\r\n\t\t\t\t\t\tTool are contained in{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCL Mapper Tool Datasets Information\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tTo learn more about the data and download the datasets contained and\r\n\t\t\t\t\t\tdisplayed within the CL Mapper Tool, see the{\" \"}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\tthis.props.toggleDownloadData();\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tDownload Data\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\ttab.\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpDatasets;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpSummaryTables extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tSummary Tables\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe CL Mapper Tool offers the ability to summarize critical load,\r\n\t\t\t\t\t\tdeposition, and critical load exceedance datasets for Class I,\r\n\t\t\t\t\t\tWilderness, and Federal Administration Areas within the conterminous\r\n\t\t\t\t\t\tUnited States. When a Tool user selects a federal land unit and a\r\n\t\t\t\t\t\tyear of interest, a series of Summary Tables with statistics on the\r\n\t\t\t\t\t\tcritical loads, deposition, and critical load exceedances within the\r\n\t\t\t\t\t\tboundaries of the selected land unit for the specified year are\r\n\t\t\t\t\t\tgenerated for download. For more information about the contents and\r\n\t\t\t\t\t\tformat of Summary Tables, see{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSummary Tables Description\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpSummaryTables;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpGlossary extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tGlossary of Terms\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tBelow are the definitions of terms and acronyms used throughout the\r\n\t\t\t\t\t\tCL Mapper Tool. For the full citation of references cited within the\r\n\t\t\t\t\t\tGlossary of Terms see{\" \"}\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\tthis.props.toggleReferences();\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\tReferences\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\taquatic acidification critical load - a modelled critical\r\n\t\t\t\t\t\tload to protect the biological integrity of stream reaches and\r\n\t\t\t\t\t\tlakes.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tBIA - United States Bureau of Indian Affairs.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tCLAD - Critical Loads of Atmospheric Deposition science\r\n\t\t\t\t\t\tcommittee of the National Atmospheric Deposition Program (NADP).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tClass I Area - geographic area recognized by the Clean Air\r\n\t\t\t\t\t\tAct Amendments of 1977 as being of the highest environmental quality\r\n\t\t\t\t\t\tand requiring maximum protection from new sources of air pollution.\r\n\t\t\t\t\t\tClass I areas are areas of special national or regional scenic,\r\n\t\t\t\t\t\trecreational, or historic value for which the Prevention of\r\n\t\t\t\t\t\tSignificant Deterioration (PSD) regulations provide special\r\n\t\t\t\t\t\tprotection. Class I areas are managed by the National Park Service\r\n\t\t\t\t\t\t(NPS), US Fish and Wildlife Service (FWS), US Department of\r\n\t\t\t\t\t\tAgriculture (USDA) Forest Service (USFS), and several Native\r\n\t\t\t\t\t\tAmerican Tribes.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tclosed canopy - terrestrial ecosystem with a forest\r\n\t\t\t\t\t\toverstory.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tCMAQ – Community Multi-scale Air Quality model developed by\r\n\t\t\t\t\t\tthe US Environmental Protection Agency (EPA) to simulate air quality\r\n\t\t\t\t\t\tand atmospheric wet and dry deposition in the United States. CMAQ\r\n\t\t\t\t\t\tcombines current knowledge in atmospheric science and air quality\r\n\t\t\t\t\t\tmodeling with multi-processor computing techniques in an open-source\r\n\t\t\t\t\t\tframework to deliver fast, technically-sound estimates of ozone,\r\n\t\t\t\t\t\tparticulates, toxics, and acid deposition (wet and dry nitrogen (N)\r\n\t\t\t\t\t\tand sulfur (S)).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tCMIP5 – Coupled Model Intercomparison Project (5th phase);\r\n\t\t\t\t\t\tframework for coupled global ocean-atmosphere general circulation\r\n\t\t\t\t\t\tmodels (GCMs). Phase 5 of CMIP is focused on improving\r\n\t\t\t\t\t\trepresentation of climate and consists of a set of climate model\r\n\t\t\t\t\t\texperiments.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tcritical load (CL) - \"a quantitative estimate of an exposure\r\n\t\t\t\t\t\tto one or more pollutants below which significant harmful effects on\r\n\t\t\t\t\t\tspecified sensitive elements of the environment do not occur\r\n\t\t\t\t\t\taccording to present knowledge\" (Nilsson and Grennfelt, 1988).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tdeposition - transfer of atmospheric pollutants from the\r\n\t\t\t\t\t\tatmosphere to the earth's surface as a constituent or in the form of\r\n\t\t\t\t\t\tprecipitation (rain, snow, fog), particles, aerosols, and gases.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tdry N deposition - atmospheric deposition of dry nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tEcoregion - geographical areas where ecosystems and ecosystem\r\n\t\t\t\t\t\tattributes are similar. The US Environmental Protection Agency (EPA)\r\n\t\t\t\t\t\tEcoregion dataset is derived from Omernik (1987), with ecoregions\r\n\t\t\t\t\t\tbeing based on similarities in geology, landforms, soils,\r\n\t\t\t\t\t\tvegetation, climate, land use, wildlife, and hydrology. Ecoregions\r\n\t\t\t\t\t\tin North America are represented at four levels of resolution\r\n\t\t\t\t\t\t(Levels I-IV).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tempirical critical load - critical load developed using an\r\n\t\t\t\t\t\tempirical approach. Empirical critical loads are typically based on\r\n\t\t\t\t\t\trelationship(s) between deposition and biotic and/or abiotic\r\n\t\t\t\t\t\tresponses.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tEPA - United States Environmental Protection Agency.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\teq – molar equivalent.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\texceedance - condition where the deposition load of a\r\n\t\t\t\t\t\tpollutant is greater than or equal to the critical load in the same\r\n\t\t\t\t\t\tlocation. Critical load exceedance is typically calculated by\r\n\t\t\t\t\t\tsubtracting a critical load value from a deposition value.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tfederal administrative area - land area with official\r\n\t\t\t\t\t\tboundary managed by a federal agency, state agency, or Tribal\r\n\t\t\t\t\t\tgovernment. Forest Service Administrative Areas represent official\r\n\t\t\t\t\t\tnational forest and grassland proclamation boundaries, as designated\r\n\t\t\t\t\t\tby Congress (boundaries within which the USFS is permitted to\r\n\t\t\t\t\t\tpurchase land, including private inholdings). National Park Service\r\n\t\t\t\t\t\tAdministrative Areas represent official national park boundaries,\r\n\t\t\t\t\t\twhich are updated when these boundaries are altered by Congress.\r\n\t\t\t\t\t\tFish and Wildlife Service Administrative Areas represent lands and\r\n\t\t\t\t\t\twaters in which the FWS has a real estate interest, including\r\n\t\t\t\t\t\tprivate inholdings. Bureau of Land Management Administrative Areas\r\n\t\t\t\t\t\trepresent land areas and office locations owned and managed by BLM.\r\n\t\t\t\t\t\tBureau of Indian Affairs Administrative Areas represent areas owned\r\n\t\t\t\t\t\tand/or managed by Tribal governments.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tforest acidification critical load - a modelled critical load\r\n\t\t\t\t\t\tto protect the health of trees in forested ecosystems.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tFWS - United States Fish and Wildlife Service.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tha - hectare (unit of area).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tIPCC - Intergovernmental Panel on Climate Change. kg -\r\n\t\t\t\t\t\tkilogram (unit of mass).\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tN - nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tNADP - a cooperative of federal, state, tribal, and local\r\n\t\t\t\t\t\tgovernment agencies, universities, non-governmental organizations,\r\n\t\t\t\t\t\tand private companies that produces estimates of atmospheric wet\r\n\t\t\t\t\t\tdeposition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tNCLD - National Critical Load Database. NCLD is a database\r\n\t\t\t\t\t\tproduced by the National Atmospheric Deposition Program (NADP)\r\n\t\t\t\t\t\tCritical Loads of Atmospheric Deposition (CLAD) science committee.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tNPS - United States National Park Service.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\topen canopy - terrestrial ecosystem without a forest\r\n\t\t\t\t\t\toverstory, including grasslands, shrublands, and woodlands.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\toverlay - geospatial datalayers that delineate administrative\r\n\t\t\t\t\t\tor ecological land units.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\toxidized N deposition - atmospheric deposition of wet and dry\r\n\t\t\t\t\t\toxidized nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tproportion oxidized N (0-1) deposition - proportion of\r\n\t\t\t\t\t\toxidized wet and dry nitrogen deposition; expressed as fraction of\r\n\t\t\t\t\t\ttotal nitrogen deposition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tproportion wet N (0-1) deposition - proportion of wet\r\n\t\t\t\t\t\tnitrogen deposition; expressed as fraction of total nitrogen\r\n\t\t\t\t\t\tdeposition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tRCP - Representative Concentration Pathway. A Representative\r\n\t\t\t\t\t\tConcentration Pathway is a greenhouse gas concentration trajectory\r\n\t\t\t\t\t\tadopted by the Intergovernmental Panel on Climate Change (IPCC) for\r\n\t\t\t\t\t\tthe fifth Assessment Report in 2014.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\treduced N deposition - atmospheric deposition of wet and dry\r\n\t\t\t\t\t\treduced nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tS - sulfur.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tsimple mass balance (SMB) model - mathematical mass-balance\r\n\t\t\t\t\t\tmodel used to estimate a critical load. SMB models may assume a\r\n\t\t\t\t\t\tsteady-state condition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tTDEP - Total (annual wet and dry) deposition dataset produced\r\n\t\t\t\t\t\tby the National Atmospheric Deposition Program (NADP) Total\r\n\t\t\t\t\t\tDeposition Science Committee. TDEP consists of estimates of\r\n\t\t\t\t\t\tatmospheric wet and dry deposition.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\ttotal N deposition - atmospheric deposition of wet and dry\r\n\t\t\t\t\t\tnitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\ttotal N+S deposition - atmospheric deposition of wet and dry\r\n\t\t\t\t\t\tnitrogen and sulfur.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\ttotal S deposition - atmospheric deposition of wet and dry\r\n\t\t\t\t\t\tsulfur.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tUSFS - United States Department of Agriculture (USDA) Forest\r\n\t\t\t\t\t\tService.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet inorganic N deposition - atmospheric deposition of wet\r\n\t\t\t\t\t\tinorganic forms of nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet inorganic N+S deposition - atmospheric deposition of wet\r\n\t\t\t\t\t\tinorganic forms of nitrogen and wet sulfur.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet N deposition - atmospheric deposition of wet nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet oxidized inorganic N deposition - atmospheric deposition\r\n\t\t\t\t\t\tof wet, oxidized inorganic forms of nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet reduced inorganic N deposition - atmospheric deposition\r\n\t\t\t\t\t\tof wet, reduced inorganic forms of nitrogen.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\twet S deposition - atmospheric deposition of wet sulfur.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tWilderness Area - land area that has been designated as a\r\n\t\t\t\t\t\tNational Wilderness in the National Wilderness Preservation System\r\n\t\t\t\t\t\tand administered by the National Park Service (NPS).\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpGlossary;\r\n","import React, { Component } from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\n\r\nclass HelpReferences extends Component {\r\n\t// eslint-disable-next-line\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tCL Mapper Tool Help\r\n\t\t\t\t\t
    \r\n\t\t\t\t\tReferences\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tThe following list details the sources (references) of the critical\r\n\t\t\t\t\t\tload, deposition, and overlay datasets including in the CL Mapper\r\n\t\t\t\t\t\tTool. Full citations are provided at the end. For more information\r\n\t\t\t\t\t\ton these datasets, see{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCL Mapper Tool Dataset Information\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tCritical Loads\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\tAll critical load datasets are from NADP-CLAD (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\thttps://nadp.slh.wisc.edu/clad-national-critical-load-database/)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t. The references listed below indicate the original study(ies) that\r\n\t\t\t\t\t\twere the source(s) of the critical load values.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    Dataset NameDescriptionSource
    Aquatic Acidification\r\n\t\t\t\t\t\t\t\t\tModelled critical loads of aquatic acidification (from\r\n\t\t\t\t\t\t\t\t\tmultiple studies) to protect the biological integrity of\r\n\t\t\t\t\t\t\t\t\tstream reaches and lakes.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMultiple studies/sources – from NADP – CLAD NCLD v2.5 (2015).\r\n\t\t\t\t\t\t\t\t\tNCLD v2.5 is no longer available for download. However, NCLD\r\n\t\t\t\t\t\t\t\t\tv3.1 (2020) contains all the v2.5 data and references.\r\n\t\t\t\t\t\t\t\t
    Forest Acidification \r\n\t\t\t\t\t\t\t\t\tModelled critical loads of forest acidification to protect\r\n\t\t\t\t\t\t\t\t\tforest ecosystems.\r\n\t\t\t\t\t\t\t\tMcNulty et al. (2007) and (2013)
    Forest Ecosystems\r\n\t\t\t\t\t\t\t\t\tEmpirical critical loads of nitrogen (N) for forest ecosystems\r\n\t\t\t\t\t\t\t\t\tat Ecoregion Level I level; min and max values based on the\r\n\t\t\t\t\t\t\t\t\tminimum and maximum values of the range of critical loads.\r\n\t\t\t\t\t\t\t\tPardo et al. (2010)
    Herbaceous Plants and Shrubs\r\n\t\t\t\t\t\t\t\t\tEmpirical critical loads of nitrogen (N) for herbaceous plants\r\n\t\t\t\t\t\t\t\t\tand shrubs at Ecoregion Level I level; min and max values\r\n\t\t\t\t\t\t\t\t\tbased on the minimum and maximum values of the range of\r\n\t\t\t\t\t\t\t\t\tcritical loads.\r\n\t\t\t\t\t\t\t\tPardo et al. (2010)
    Mycorrhizal Fungi\r\n\t\t\t\t\t\t\t\t\tEmpirical critical loads of nitrogen (N) for mycorrhizal fungi\r\n\t\t\t\t\t\t\t\t\tat Ecoregion Level I; min and max values based on the minimum\r\n\t\t\t\t\t\t\t\t\tand maximum values of the range of critical loads.\r\n\t\t\t\t\t\t\t\tPardo et al. (2010)
    Herbaceous Species Richness (plot)\r\n\t\t\t\t\t\t\t\t\tEmpirical critical loads of nitrogen (N) at plot level;\r\n\t\t\t\t\t\t\t\t\tseparate critical loads for plant communities in open and\r\n\t\t\t\t\t\t\t\t\tclosed canopy systems.\r\n\t\t\t\t\t\t\t\tSimkin et al. (2016)
    Herbaceous Species Richness (Ecoregion)\r\n\t\t\t\t\t\t\t\t\tEmpirical critical loads of nitrogen (N) (5th{\" \"}\r\n\t\t\t\t\t\t\t\t\tpercentile) at Ecoregion Level III or IV; separate critical\r\n\t\t\t\t\t\t\t\t\tloads for plant communities in open and closed canopy systems.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tNADP-CLAD NCLD v3.1 (2020) using data from Simkin et al.\r\n\t\t\t\t\t\t\t\t\t(2016)\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tDeposition\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\tThe references listed below describe the sources of the five\r\n\t\t\t\t\t\tdeposition datasets used in the CL Mapper Tool.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    Dataset NameDescriptionSource
    TDEP\r\n\t\t\t\t\t\t\t\t\tTotal (annual wet and dry) deposition (TDEP) – version\r\n\t\t\t\t\t\t\t\t\t2018.02.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://gaftp.epa.gov/castnet/tdep/2021_01_grids/\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    CMAQ\r\n\t\t\t\t\t\t\t\t\tCommunity Multiscale Air Quality (CMAQ) annual wet and dry\r\n\t\t\t\t\t\t\t\t\tdeposition – version 5.0.2.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://gaftp.epa.gov/exposure/CMAQ/V5_0_2/deposition_shapefiles/conus/\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    CMIP5 (1850-2000)\r\n\t\t\t\t\t\t\t\t\tCoupled Model Intercomparison Project (5th phase) global\r\n\t\t\t\t\t\t\t\t\tCommunity Atmosphere Model (CAM) version 3.5; annual wet and\r\n\t\t\t\t\t\t\t\t\tdry historical deposition (1850-2000), wet and dry deposition\r\n\t\t\t\t\t\t\t\t\tbased on RETRO (1960-2000), and EDGAR-HYDE (1890-1990)\r\n\t\t\t\t\t\t\t\t\temissions according to Intergovernmental Panel on Climate\r\n\t\t\t\t\t\t\t\t\tChange (IPCC) AR5 using global Community Atmosphere Model\r\n\t\t\t\t\t\t\t\t\t(CAM) v. 3.5.\r\n\t\t\t\t\t\t\t\tLamarque et al. (2010); dataset not available online
    CMIP5 (2001-2100)\r\n\t\t\t\t\t\t\t\t\tCoupled Model Intercomparison Project (5th phase) global\r\n\t\t\t\t\t\t\t\t\tCommunity Atmosphere Model (CAM) version 3.5; annual wet and\r\n\t\t\t\t\t\t\t\t\tdry future deposition (2001 - 2100) according to\r\n\t\t\t\t\t\t\t\t\tIntergovernmental Panel on Climate Change (IPCC) AR5 Scenarios\r\n\t\t\t\t\t\t\t\t\t(RCP 4.5 and 8.5), using global Community Atmosphere Model\r\n\t\t\t\t\t\t\t\t\t(CAM) v. 3.5.\r\n\t\t\t\t\t\t\t\tLamarque et al. (2011); dataset not available online
    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tOverlays\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\tThe references listed below describe the datasets used to represent\r\n\t\t\t\t\t\tthe twelve geographical boundary “overlay” layers displayed and used\r\n\t\t\t\t\t\tin the CL Mapper Tool.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    Dataset NameDescriptionSource
    Level 1-3 Ecoregion\r\n\t\t\t\t\t\t\t\t\tEPA Ecoregions of North America. Geographical classification\r\n\t\t\t\t\t\t\t\t\tsystem that groups similar ecosystems; ecoregions denote areas\r\n\t\t\t\t\t\t\t\t\tof similarity in the mosaic of biotic, abiotic, terrestrial,\r\n\t\t\t\t\t\t\t\t\tand aquatic ecosystem components with humans being considered\r\n\t\t\t\t\t\t\t\t\tas part of the biota. Environmental Protection Agency (EPA)\r\n\t\t\t\t\t\t\t\t\tEcoregion framework is derived from Omernik (1987) and\r\n\t\t\t\t\t\t\t\t\tconsists of four levels, with three being included in the CL\r\n\t\t\t\t\t\t\t\t\tMapper Tool: Level I (15 Ecoregions), Level II (50\r\n\t\t\t\t\t\t\t\t\tEcoregions), and Level III (182 Ecoregions).\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://www.epa.gov/eco-research/ecoregions-north-america\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Federal Administrative Areas – NPS\r\n\t\t\t\t\t\t\t\t\tNational Park Service (NPS) administrative unit boundaries.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://irma.nps.gov/DataStore/Reference/Profile/2224545?lnv=True\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Federal Administrative Areas - USFS\r\n\t\t\t\t\t\t\t\t\tUS Forest Service (USFS) administrative unit boundaries.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://data.fs.usda.gov/geodata/edw/datasets.php\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Federal Administrative Areas - FWS \r\n\t\t\t\t\t\t\t\t\tUS Fish and Wildlife Service (FWS) administrative unit\r\n\t\t\t\t\t\t\t\t\tboundaries.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://fws.maps.arcgis.com/home/item.html?id=0a30eaf43328427db8750282d67f0005\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Class I Areas - NPS, USFS, FWS, BIA\r\n\t\t\t\t\t\t\t\t\tMandatory Class 1 Federal Area polygons and Mandatory Class 1\r\n\t\t\t\t\t\t\t\t\tFederal Area labels in the US. It was developed by EPA's\r\n\t\t\t\t\t\t\t\t\tOffice of Air Quality Planning and Standards (OAQPS) based on\r\n\t\t\t\t\t\t\t\t\tfeatures originating from several data sources, including EPA,\r\n\t\t\t\t\t\t\t\t\tUSFS, FWS, NPS and BIA.\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://edg.epa.gov/data/public/OAR/OAQPS/Class1/Class1Areas.zip\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Wilderness Areas - NPS\r\n\t\t\t\t\t\t\t\t\tAreas that have been designated as National Wilderness in the\r\n\t\t\t\t\t\t\t\t\tNational Wilderness Preservation System and administered by\r\n\t\t\t\t\t\t\t\t\tthe National Park Service (NPS).\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://mapservices.nps.gov/arcgis/rest/services/Wilderness\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Wilderness Areas - USFS\r\n\t\t\t\t\t\t\t\t\tAreas that have been designated as National Wilderness in the\r\n\t\t\t\t\t\t\t\t\tNational Wilderness Preservation System and administered by\r\n\t\t\t\t\t\t\t\t\tthe US Forest Service (USFS).\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://data.fs.usda.gov/geodata/edw/datasets.php\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Wilderness Areas - FWS\r\n\t\t\t\t\t\t\t\t\tAreas that have been designated as National Wilderness in the\r\n\t\t\t\t\t\t\t\t\tNational Wilderness Preservation System and administered by\r\n\t\t\t\t\t\t\t\t\tthe US Fish and Wildlife Service (FWS).\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\thttps://fws.maps.arcgis.com/home/item.html?id=31c41fcca6d34d3fa9924de38651a317\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Conterminous U.S. - 1-km and 2.338-kmUSA_adm0.shp\r\n\t\t\t\t\t\t\t\t\tRemoved 1.0-km or 2.338-km cells with land cover not suitable\r\n\t\t\t\t\t\t\t\t\tto terrestrial CLs to create four Land-Cover Mask datasets:\r\n\t\t\t\t\t\t\t\t\tContUSmask1, ContUSmask2338, ContUSmask2.338hsreroc, and\r\n\t\t\t\t\t\t\t\t\tContUSmask2.338hsrercc.\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tFull Citations (cited in the CL Mapper Tool Help Tab)\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tLamarque, J.-F., Bond, T.C., Eyring, V., Granier, C., Heil, A.,\r\n\t\t\t\t\t\tKlimont, Z., Lee, D., Liousse, C., Mieville, A., Owen, B., Schultz,\r\n\t\t\t\t\t\tM.G., Shindell, D., Smith, S.J., Stehfest, E., Van Aardenne, J.,\r\n\t\t\t\t\t\tCooper, O.R., Kainuma, M., Mahowald, N., McConnell, J.R., Naik, V.,\r\n\t\t\t\t\t\tRiahi, K., & van Vuuren, D.P. 2010. Historical (1850-2000) gridded\r\n\t\t\t\t\t\tanthropogenic and biomass burning emissions of reactive gases and\r\n\t\t\t\t\t\taerosols: methodology and application. Atmospheric Chemistry{\" \"}\r\n\t\t\t\t\t\tand Physics, 10: 7017-7039.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tLamarque, J.F., Kyle, G.P., Meinshausen, M., Riahi, K., Smith, S.J.,\r\n\t\t\t\t\t\tvan Vuuren, D.P., Conley, A.J., & Vitt, F. 2011. Global and regional\r\n\t\t\t\t\t\tevolution of short-lived radiatively-active gases and aerosols in\r\n\t\t\t\t\t\tthe representative concentration pathways. Climatic Change,\r\n\t\t\t\t\t\t109: 191–212.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tMcNulty, S.T., Cohen, E.C., Moore Myers, J.A., Sullivan, T.J., & Li,\r\n\t\t\t\t\t\tH. 2007. Estimates of critical acid loads and exceedances for forest\r\n\t\t\t\t\t\tsoils across the conterminous United States.{\" \"}\r\n\t\t\t\t\t\tEnvironmental Pollution, 149: 281-292. DOI:\r\n\t\t\t\t\t\t10.1016/j.envpoI.2007.05.025\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tMcNulty, S.T., Cohen, E.C., & Moore Myers, J.A. 2013. Climate Change\r\n\t\t\t\t\t\tImpacts on Forest Soil Critical Acid Loads and Exceedances at a\r\n\t\t\t\t\t\tNational Scale. In: Potter, Kevin M.; Conkling, Barbara L., eds.\r\n\t\t\t\t\t\t2013.{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tForest Health Monitoring: national status, trends, and analysis\r\n\t\t\t\t\t\t\t2010\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t. Gen. Tech. Rep. SRS-GTR-176.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tLynch, J.A., Pardo, L.H., & Huber, C. 2015. Detailed Documentation\r\n\t\t\t\t\t\tof the National Critical Load Database (NCLD) for U.S. Critical\r\n\t\t\t\t\t\tLoads of Sulfur and Nitrogen, version 2.5, National Atmospheric\r\n\t\t\t\t\t\tDeposition Program, Illinois State Water Survey, Champaign, IL.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tLynch, J.A., Phelan, J., Pardo, L.H., McDonnell, T.C., & Clark, C.M.\r\n\t\t\t\t\t\t2017. Detailed Documentation of the National Critical Load Database\r\n\t\t\t\t\t\t(NCLD) for U.S. Critical Loads of Sulfur and Nitrogen, version 3.0,\r\n\t\t\t\t\t\tNational Atmospheric Deposition Program, Illinois State Water\r\n\t\t\t\t\t\tSurvey, Champaign, IL.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tLynch, J.A., Phelan, J., Pardo, L.H., McDonnell, T.C., Clark, C.M.,\r\n\t\t\t\t\t\t& Bell, M.D. 2020. Detailed Documentation of the National Critical\r\n\t\t\t\t\t\tLoad Database (NCLD) for U.S. Critical Loads of Sulfur and Nitrogen,\r\n\t\t\t\t\t\tversion 3.1, National Atmospheric Deposition Program, Wisconsin\r\n\t\t\t\t\t\tState Laboratory of Hygiene, Madison, WI.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tNilsson, J. and Grennfelt, P. 1988.{\" \"}\r\n\t\t\t\t\t\tCritical loads for sulphur and nitrogen. UNECE/Nordic Council\r\n\t\t\t\t\t\tworkshop report, Skokloster, Sweden. Nordic Council of Ministers,\r\n\t\t\t\t\t\tCopenhagen. 418 pp.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tOmernik, J.M. 1987. Ecoregions of the conterminous United States.\r\n\t\t\t\t\t\tMap (scale 1:7,500,000).{\" \"}\r\n\t\t\t\t\t\tAnnals of the Association of American Geographers, 77(1):\r\n\t\t\t\t\t\t118-125.{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\thttp://dx.doi.org/10.1111/j.1467-8306.1987.tb00149.x\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tPardo, L.H. 2010.{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tApproaches for estimating critical loads of N and S deposition for\r\n\t\t\t\t\t\t\tforest ecosystems on U.S. federal lands\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t. USDA Forest Service General Technical Report, NRS71: 25 p.\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\tSimkin, S.M., Allen, E.B., Bowman, W.D., Clark, C.M., Belnap, J.,\r\n\t\t\t\t\t\tBrooks, M.L., Cade, B.S., Collins, S.L., Geiser, L.H., Gilliam,\r\n\t\t\t\t\t\tF.S., Jovan, S.E., Pardo, L.H., Schulz, B.K., Stevens, C.J., Suding,\r\n\t\t\t\t\t\tK.N., Throopo, H.L., & Waller, D.M. 2016. Conditional vulnerability\r\n\t\t\t\t\t\tof plant diversity to atmospheric nitrogen deposition across the\r\n\t\t\t\t\t\tUnited States.{\" \"}\r\n\t\t\t\t\t\tProceedings of the National Academy of Sciences, 113:\r\n\t\t\t\t\t\t4086-4091. DOI: 10.1073/pnas.1515241113.\r\n\t\t\t\t\t

    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default HelpReferences;\r\n","import React, { Component } from \"react\";\r\nimport logo1 from \"images/logo1.png\";\r\nimport logo2 from \"images/logo2.png\";\r\nimport logo3 from \"images/logo3.png\";\r\nimport Menu from \"@material-ui/core/Menu\";\r\nimport HelpOverview from \"js/components/header/HelpOverview\";\r\nimport HelpDisclaimer from \"js/components/header/HelpDisclaimer\";\r\nimport HelpHowTo from \"js/components/header/HelpHowTo\";\r\nimport HelpDatasets from \"js/components/header/HelpDatasets\";\r\nimport DownloadData from \"js/components/header/DownloadData\";\r\nimport HelpSummaryTables from \"js/components/header/HelpSummaryTables\";\r\nimport HelpGlossary from \"js/components/header/HelpGlossary\";\r\nimport HelpReferences from \"js/components/header/HelpReferences\";\r\n\r\nclass Help extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n openOverview: false,\r\n openDisclaimer: false,\r\n openHowTo: false,\r\n openDatasets: false,\r\n openDownloadData: false,\r\n openSummaryTables: false,\r\n openGlossary: false,\r\n openReferences: false\r\n };\r\n }\r\n\r\n toggleOverview = () => {\r\n this.setState({\r\n openOverview: !this.state.openOverview,\r\n });\r\n };\r\n\r\n toggleDisclaimer = () => {\r\n this.setState({\r\n openDisclaimer: !this.state.openDisclaimer,\r\n });\r\n };\r\n\r\n toggleHowTo = () => {\r\n this.setState({\r\n openHowTo: !this.state.openHowTo,\r\n });\r\n };\r\n\r\n toggleDatasets = () => {\r\n this.setState({\r\n openDatasets: !this.state.openDatasets,\r\n });\r\n };\r\n\r\n toggleDownloadData = () => {\r\n this.setState({\r\n openDownloadData: !this.state.openDownloadData,\r\n });\r\n };\r\n\r\n toggleSummaryTables = () => {\r\n this.setState({\r\n openSummaryTables: !this.state.openSummaryTables,\r\n });\r\n };\r\n\r\n toggleGlossary = () => {\r\n this.setState({\r\n openGlossary: !this.state.openGlossary,\r\n });\r\n };\r\n\r\n toggleReferences = () => {\r\n this.setState({\r\n openReferences: !this.state.openReferences,\r\n });\r\n };\r\n\r\n handleRequestClose = (evt) => {\r\n this.props.handleRequestClose(evt);\r\n };\r\n\r\n render() {\r\n const {\r\n openOverview,\r\n openDisclaimer,\r\n openHowTo,\r\n openDatasets,\r\n openDownloadData,\r\n openSummaryTables,\r\n openGlossary,\r\n openReferences\r\n } = this.state;\r\n return (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    CL Mapper Tool Help
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleOverview()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\tOverview\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tGeneral background and information on critical loads and the CL\r\n\t\t\t\t\t\t\t\tMapper Tool.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleHowTo()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tHow to Use\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\tthe Tool\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tStep-by-step guide on how to use the CL Mapper Tool and its\r\n\t\t\t\t\t\t\t\tvarious display, summary tables generation, and dataset download\r\n\t\t\t\t\t\t\t\tfunctions.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleDatasets()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\tDatasets\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tDescription of the datasets included in the CL Mapper Tool.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleSummaryTables()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tSummary\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\tTables\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tDescription of the summary tables that can be generated for\r\n\t\t\t\t\t\t\t\teach federal land unit within the CL Mapper Tool.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleGlossary()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\tGlossary\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tDefinitions of terms and acronyms included in the CL Mapper Tool\r\n\t\t\t\t\t\t\t\tdisplay and documents.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t this.toggleReferences()}\r\n\t\t\t\t\t\t\t\t\tclassName=\"help-button\">\r\n\t\t\t\t\t\t\t\t\tReferences\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tSources of the critical loads, deposition, and geographical\r\n\t\t\t\t\t\t\t\toverlay datasets included in the CL Mapper Tool. Full citations\r\n\t\t\t\t\t\t\t\tof cited references provided at the end.\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n }\r\n}\r\n\r\nexport default Help;\r\n","import React, { Component } from 'react';\r\nimport DisplayMenu from 'js/components/header/DisplayMenu';\r\nimport SharePrint from 'js/components/header/SharePrint';\r\nimport EpaHeader from 'js/components/header/EpaHeader';\r\nimport { menu } from 'js/config/config';\r\nimport DownloadData from 'js/components/header/DownloadData';\r\nimport Help from 'js/components/header/Help';\r\n\r\nexport default class Header extends Component {\r\n displayName: 'Header';\r\n\r\n state = {\r\n openDisplayOptions: false,\r\n opensharePrint: false,\r\n openDownloadData: false,\r\n openHelp: false\r\n };\r\n\r\n toggleDisplayOptions = event => {\r\n this.setState({\r\n openDisplayOptions: !this.state.openDisplayOptions,\r\n anchorEl: event.currentTarget\r\n });\r\n };\r\n\r\n toggleSharePrint = event => {\r\n this.setState({\r\n opensharePrint: !this.state.opensharePrint,\r\n anchorEl: event.currentTarget\r\n });\r\n };\r\n\r\n toggleDownloadData = event => {\r\n this.setState({\r\n openDownloadData: !this.state.openDownloadData,\r\n anchorEl: event.currentTarget\r\n });\r\n };\r\n\r\n toggleHelp = event => {\r\n this.setState({\r\n openHelp: !this.state.openHelp,\r\n anchorEl: event.currentTarget\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n index,\r\n layout,\r\n mapsController,\r\n mapViewLayout,\r\n printAllReady,\r\n printActiveReady,\r\n shareURL,\r\n syncDataOptions,\r\n syncLocations,\r\n url,\r\n setURL,\r\n updateBaseMap\r\n } = this.props;\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {menu.global}\r\n {' '}\r\n | {menu.mapper}\r\n
    \r\n
    \r\n \r\n {menu.displayOptions}\r\n
    \r\n
    \r\n {menu.sharePrint}\r\n
    \r\n
    {menu.download}
    \r\n
    {menu.help}
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nexport default class Footer extends Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\nconst ReportSpinner = props => {\r\n return (\r\n \r\n \r\n {'Creating Report - This can take up to a few minutes.'}\r\n \r\n \r\n
    {props.reportStatusText}
    \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReportSpinner;\r\n","import React from 'react';\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\nconst ReportSpinner = props => {\r\n return (\r\n \r\n \r\n {'Creating CSV Downloads - This can take up to a few minutes.'}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReportSpinner;\r\n","import MapImageLayer from '@arcgis/core/layers/MapImageLayer';\r\nimport ImageryLayer from '@arcgis/core/layers/ImageryLayer';\r\nimport Legend from '@arcgis/core/widgets/Legend';\r\nimport { arcgisServiceUrl } from 'js/config/config';\r\n\r\nconst getSublayers = (length, visible = []) => {\r\n const sublayers = [];\r\n for (let i = 0; i < length; i++) {\r\n sublayers.push({\r\n id: i,\r\n visible: visible.indexOf(i) > -1\r\n });\r\n }\r\n return sublayers;\r\n};\r\n\r\nexport const addLayers = (map) => {\r\n const layers = [];\r\n // Add critical loads layer\r\n\r\n const critLayer = new MapImageLayer({\r\n url: arcgisServiceUrl + '/CriticalLoads/MapServer',\r\n id: 'criticalLoads',\r\n sublayers: getSublayers(23),\r\n visible: false\r\n });\r\n layers.push(critLayer);\r\n\r\n // Add deposition layer\r\n const depLayer = new ImageryLayer({\r\n url: arcgisServiceUrl + '/DepositionModels/ImageServer',\r\n id: 'deposition',\r\n visible: false\r\n });\r\n layers.push(depLayer);\r\n\r\n // Add exceedance layer\r\n const exLayer = new ImageryLayer({\r\n url: arcgisServiceUrl + '/ExceedanceModels/ImageServer',\r\n id: 'exceedance',\r\n visible: false\r\n });\r\n layers.push(exLayer);\r\n\r\n // Add SW exceedance layer\r\n const swLayer = new MapImageLayer({\r\n url: arcgisServiceUrl + '/SWExceedance/MapServer',\r\n id: 'exceedance-sw',\r\n sublayers: getSublayers(8),\r\n visible: false\r\n });\r\n layers.push(swLayer);\r\n\r\n // Add HerbSR exceedance layer\r\n const herbSRLayer = new MapImageLayer({\r\n url: arcgisServiceUrl + '/HerbSRExceedance/MapServer',\r\n id: 'exceedance-herbsr',\r\n sublayers: getSublayers(16),\r\n visible: false\r\n });\r\n layers.push(herbSRLayer);\r\n\r\n\r\n // Add overlays loads layer\r\n const overlays = new MapImageLayer({\r\n url: arcgisServiceUrl + '/Overlays/MapServer',\r\n id: 'overlays',\r\n sublayers: getSublayers(34, [30]),\r\n visible: true\r\n });\r\n console.log(getSublayers(34, [30]));\r\n layers.push(overlays);\r\n map.addMany(layers)\r\n // .then(() => {\r\n // console.log('LAYERS LOADED')\r\n // });\r\n};\r\n\r\nexport const addLegend = (view, map, index) => {\r\n // Add legend to the view\r\n return new Legend({\r\n view: view,\r\n container: 'legend-container-' + index\r\n });\r\n};\r\n","import React from 'react';\r\nimport { roundDecimal } from 'js/utils/helper';\r\nimport shortid from 'shortid';\r\n\r\nconst formatValue = (val) => {\r\n if (val === 9999 || isNaN(val) || val === null) {\r\n val = 'N/A';\r\n } else {\r\n val = roundDecimal(val);\r\n }\r\n return val;\r\n};\r\n\r\nconst setClObject = data => {\r\n console.log(\"In setCLObject in clTableHelper.js\");\r\n console.log(data);\r\n return {\r\n records: { val: data.filter(v => v.statistic === 'count').map(v => v.value) },\r\n\r\n mean: {\r\n val: data.filter(v => v.statistic === 'mean').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'mean').map(v => formatValue(v.kgVal))\r\n },\r\n std: {\r\n val: data.filter(v => v.statistic === 'std').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'std').map(v => formatValue(v.kgVal))\r\n },\r\n min: {\r\n val: data.filter(v => v.statistic === 'min').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'min').map(v => formatValue(v.kgVal))\r\n },\r\n percentile5: {\r\n val: data.filter(v => v.statistic === 'percentile5').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile5').map(v => formatValue(v.kgVal))\r\n },\r\n percentile10: {\r\n val: data.filter(v => v.statistic === 'percentile10').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile10').map(v => formatValue(v.kgVal))\r\n },\r\n percentile50: {\r\n val: data.filter(v => v.statistic === 'percentile50').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile50').map(v => formatValue(v.kgVal))\r\n },\r\n max: {\r\n val: data.filter(v => v.statistic === 'max').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'max').map(v => formatValue(v.kgVal))\r\n }\r\n };\r\n};\r\n\r\nconst setComponent = obj => {\r\n return Object.keys(obj).map((key) => {\r\n const val = obj[key].val[0];\r\n const kgVal = obj[key].kgVal ? obj[key].kgVal[0] : null;\r\n\r\n if (kgVal && kgVal !== 'N/A') {\r\n return (\r\n \r\n {obj[key].val} ({obj[key].kgVal})\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {(val || val === 0) ? val : 'N/A'}\r\n \r\n );\r\n }\r\n });\r\n};\r\n\r\nexport const getClTableData = data => {\r\n console.log(\"getClTableData in clTableHelper.js:\");\r\n console.log(data);\r\n const taObj = setClObject(data.filter(v => v.cl === 'ta' && v.unit !== 'ha'));\r\n const aaObj = setClObject(data.filter(v => v.cl === 'aa' && v.unit !== 'ha'));\r\n const forminObj = setClObject(data.filter(v => v.cl === 'formin'&& v.unit !== 'ha'));\r\n const formidObj = setClObject(data.filter(v => v.cl === 'formid' && v.unit !== 'ha'));\r\n const hpsminObj = setClObject(data.filter(v => v.cl === 'hpsmin' && v.unit !== 'ha'));\r\n const hpsmidObj = setClObject(data.filter(v => v.cl === 'hpsmid' && v.unit !== 'ha'));\r\n const mfminObj = setClObject(data.filter(v => v.cl === 'mfmin' && v.unit !== 'ha'));\r\n const mfmidObj = setClObject(data.filter(v => v.cl === 'mfmid' && v.unit !== 'ha'));\r\n const hsrptocObj = setClObject(data.filter(v => v.cl === 'hsrptoc' && v.unit !== 'ha'));\r\n const hsrptccObj = setClObject(data.filter(v => v.cl === 'hsrptcc' && v.unit !== 'ha'));\r\n const hsrerocObj = setClObject(data.filter(v => v.cl === 'hsreroc' && v.unit !== 'ha'));\r\n const hsrerccObj = setClObject(data.filter(v => v.cl === 'hsrercc' && v.unit !== 'ha'));\r\n console.log(\"hsrerocObj:\");\r\n console.log(hsrerocObj);\r\n\r\n const ta = setComponent(taObj);\r\n const aa = setComponent(aaObj);\r\n const formin = setComponent(forminObj);\r\n const formid = setComponent(formidObj);\r\n const hpsmin = setComponent(hpsminObj);\r\n const hpsmid = setComponent(hpsmidObj);\r\n const mfmin = setComponent(mfminObj);\r\n const mfmid = setComponent(mfmidObj);\r\n const hsrptoc = setComponent(hsrptocObj);\r\n const hsrptcc = setComponent(hsrptccObj);\r\n const hsreroc = setComponent(hsrerocObj);\r\n const hsrercc = setComponent(hsrerccObj);\r\n\r\n return {\r\n ta,\r\n aa,\r\n formin,\r\n formid,\r\n hpsmin,\r\n hpsmid,\r\n mfmin,\r\n mfmid,\r\n hsrptoc,\r\n hsrptcc,\r\n hsreroc,\r\n hsrercc\r\n };\r\n};\r\n","import React from 'react';\r\nimport { getClTableData } from 'js/utils/clTableHelper';\r\nconst CLTable = props => {\r\n const data = props.data;\r\n const {\r\n ta,\r\n aa,\r\n formin,\r\n formid,\r\n hpsmin,\r\n hpsmid,\r\n mfmin,\r\n mfmid,\r\n hsrptoc,\r\n hsrptcc,\r\n hsreroc,\r\n hsrercc,\r\n } = getClTableData(data);\r\n\r\n console.log(\"In CLTable.js: \");\r\n console.log(data);\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 {ta}\r\n \r\n \r\n \r\n \r\n {aa}\r\n \r\n \r\n \r\n \r\n {formin}\r\n \r\n \r\n \r\n \r\n {formid}\r\n \r\n \r\n \r\n \r\n {hpsmin}\r\n \r\n \r\n \r\n \r\n {hpsmid}\r\n \r\n \r\n \r\n \r\n {mfmin}\r\n \r\n \r\n \r\n \r\n {mfmid}\r\n \r\n \r\n \r\n \r\n {hsrptoc}\r\n \r\n \r\n \r\n \r\n {hsrptcc}\r\n \r\n \r\n \r\n \r\n {hsreroc}\r\n \r\n \r\n \r\n \r\n {hsrercc}\r\n \r\n \r\n
    critical load \r\n # records\r\n mean\r\n standard deviation\r\n min5th10th50thmax
    Forest AcidificationN + S
    Aquatic AcidificationN + S
    Empirical Forest MinN
    Empirical Forest MidN
    Empirical Herb/Shrub MinN
    Empirical Herb/Shrub MidN
    Empirical Mycorrhizae MinN
    Empirical Mycorrhizae MidN
    Herb. Spp. Richness
    - Open Canopy (plot)
    N
    Herb. Spp. Richness
    - Closed Canopy (plot)
    N
    Herb. Spp. Richness
    - Open Canopy (Ecoregion)
    N
    Herb. Spp. Richness
    - Closed Canopy (Ecoregion)
    N
    \r\n );\r\n};\r\n\r\nexport default CLTable;\r\n","import React from 'react';\r\nimport { roundDecimal } from 'js/utils/helper';\r\nimport shortid from 'shortid';\r\n\r\nconst formatValue = (val) => {\r\n if (val === 9999 || isNaN(val) || val === null) {\r\n val = 'N/A';\r\n } else {\r\n val = roundDecimal(val);\r\n }\r\n return val;\r\n};\r\n\r\nconst setExSevObject = (data, tableNumber) => {\r\n let exSevObj;\r\n console.log(\"In exSevTableHelper.js : data\");\r\n console.log(data);\r\n switch (tableNumber) {\r\n case 1:\r\n exSevObj = {\r\n ta: {\r\n val: data.filter(v => v.ex === 'ta' && v.variable === 'totalns').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'ta' && v.variable === 'totalns').map(v => formatValue(v.kgVal))\r\n },\r\n aa: {\r\n val: data.filter(v => v.ex === 'aa' && v.variable === 'totalns').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'aa' && v.variable === 'totalns').map(v => formatValue(v.kgVal))\r\n },\r\n formin: {\r\n val: data.filter(v => v.ex === 'formin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'formin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n formid: {\r\n val: data.filter(v => v.ex === 'formid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'formid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hpsmin: {\r\n val: data.filter(v => v.ex === 'hpsmin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hpsmin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hpsmid: {\r\n val: data.filter(v => v.ex === 'hpsmid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hpsmid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n mfmin: {\r\n val: data.filter(v => v.ex === 'mfmin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'mfmin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n mfmid: {\r\n val: data.filter(v => v.ex === 'mfmid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'mfmid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n }\r\n };\r\n break;\r\n case 2:\r\n exSevObj = {\r\n hsrptoc: {\r\n val: data.filter(v => v.ex === 'hsrptoc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrptoc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsrptcc: {\r\n val: data.filter(v => v.ex === 'hsrptcc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrptcc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsreroc: {\r\n val: data.filter(v => v.ex === 'hsreroc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsreroc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsrercc: {\r\n val: data.filter(v => v.ex === 'hsrercc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrercc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n }\r\n };\r\n break;\r\n default:\r\n exSevObj = {\r\n ta: {\r\n val: data.filter(v => v.ex === 'ta' && v.variable === 'totalns').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'ta' && v.variable === 'totalns').map(v => formatValue(v.kgVal))\r\n },\r\n aa: {\r\n val: data.filter(v => v.ex === 'aa' && v.variable === 'totalns').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'aa' && v.variable === 'totalns').map(v => formatValue(v.kgVal))\r\n },\r\n formin: {\r\n val: data.filter(v => v.ex === 'formin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'formin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n formid: {\r\n val: data.filter(v => v.ex === 'formid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'formid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hpsmin: {\r\n val: data.filter(v => v.ex === 'hpsmin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hpsmin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hpsmid: {\r\n val: data.filter(v => v.ex === 'hpsmid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hpsmid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n mfmin: {\r\n val: data.filter(v => v.ex === 'mfmin' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'mfmin' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n mfmid: {\r\n val: data.filter(v => v.ex === 'mfmid' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'mfmid' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsrptoc: {\r\n val: data.filter(v => v.ex === 'hsrptoc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrptoc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsrptcc: {\r\n val: data.filter(v => v.ex === 'hsrptcc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrptcc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsreroc: {\r\n val: data.filter(v => v.ex === 'hsreroc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsreroc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n },\r\n hsrercc: {\r\n val: data.filter(v => v.ex === 'hsrercc' && v.variable === 'totaln').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.ex === 'hsrercc' && v.variable === 'totaln').map(v => formatValue(v.kgVal))\r\n }\r\n };\r\n }\r\n console.log(\"exSevObj in exSevTableHelper.js:\");\r\n console.log(exSevObj);\r\n return exSevObj;\r\n};\r\n\r\nconst setComponent = (obj, statistic) => {\r\n\r\n return Object.keys(obj).map(key => {\r\n const val = obj[key].val[0];\r\n const kgVal = obj[key].kgVal[0];\r\n\r\n if (kgVal && kgVal !== 'N/A') {\r\n return (\r\n \r\n {val} ({kgVal})\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {(val || val === 0) ? val : 'N/A'}\r\n \r\n );\r\n }\r\n });\r\n};\r\n\r\nexport const getExSevTableData = (data, tableNumber) => {\r\n console.log(\"In getExSevTableDAta in exSevTableHelper.js\")\r\n console.log(data);\r\n const categoryLabels = {\r\n 'tdep': 'tdep',\r\n 'cmaq': 'cmaq',\r\n 'nadp': 'nadp',\r\n 'hist': 'cmip5hist', // was hist\r\n 'rcp2.6': 'cmip5rcp26',\r\n 'rcp4.5': 'cmip5rcp45',\r\n 'rcp6.0': 'cmip5rcp60',\r\n 'rcp8.5': 'cmip5rcp85'\r\n };\r\n const categories = [\r\n 'tdep',\r\n 'cmaq',\r\n 'nadp',\r\n 'hist',\r\n 'rcp2.6',\r\n 'rcp4.5',\r\n 'rcp6.0',\r\n 'rcp8.5'\r\n ];\r\n const statistics = [\r\n 'pos-mean',\r\n 'pos-min',\r\n 'pos-percentile5',\r\n 'pos-percentile50',\r\n 'pos-percentile95',\r\n 'pos-max'\r\n ];\r\n const result = {};\r\n categories.forEach((category, i) => {\r\n result[category] = {};\r\n statistics.forEach((statistic, i) => {\r\n\r\n result[category][statistic] = setComponent(\r\n setExSevObject(\r\n data.ex.filter(\r\n v => ((v.dep === categoryLabels[category]) && (v.statistic === statistic) && (v.variable === 'totalns' || v.variable === 'totaln'))\r\n ), tableNumber\r\n ),\r\n statistic\r\n );\r\n });\r\n });\r\n return result;\r\n};\r\n","import React from 'react';\r\nimport shortid from 'shortid';\r\nimport { getExSevTableData } from 'js/utils/exSevTableHelper';\r\nconst ExSevTable = props => {\r\n const data = props.data;\r\n console.log(\"Exceedance Severity data:\");\r\n console.log(data);\r\n const tableData = getExSevTableData(data, props.tableNumber);\r\n console.log(\"Exceedance Severity tableData:\");\r\n console.log(tableData);\r\n console.log(\"Exceedance Severity tableNumber:\");\r\n console.log(props.tableNumber);\r\n\r\n const { csvDownload, tableNumber } = props;\r\n\r\n const generateHeaders = () => {\r\n let headers;\r\n switch (tableNumber) {\r\n case 1:\r\n headers = \r\n \r\n \r\n statistic\r\n \r\n \r\n
    forest
    acidification
    N+S
    \r\n \r\n \r\n
    aquatic
    acidification
    N+S
    \r\n \r\n \r\n
    empirical
    forest min
    N
    \r\n \r\n \r\n
    empirical
    forest mid
    N
    \r\n \r\n \r\n
    empirical
    herb/shrub min
    N
    \r\n \r\n \r\n
    empirical
    herb/shrub mid
    N
    \r\n \r\n \r\n
    empirical
    mycorrhizae min
    N
    \r\n \r\n \r\n
    empirical
    mycorrhizae mid
    N
    \r\n \r\n ;\r\n break;\r\n case 2:\r\n headers = \r\n \r\n \r\n statistic\r\n \r\n \r\n
    herb. spp. richness
    - open canopy (plot)
    N
    \r\n \r\n \r\n
    herb. spp. richness
    - closed canopy (plot)
    N
    \r\n \r\n \r\n
    herb. spp. richness
    - open canopy (ecoregion)
    N
    \r\n \r\n \r\n
    herb. spp. richness
    - closed canopy (ecoregion)
    N
    \r\n \r\n ;\r\n break;\r\n default:\r\n headers = \r\n \r\n \r\n statistic\r\n \r\n \r\n forest acidification N+S\r\n \r\n \r\n aquatic acidification N+S\r\n \r\n \r\n empirical forest min N\r\n \r\n \r\n empirical forest mid N\r\n \r\n \r\n empirical herb/shrub min N\r\n \r\n \r\n empirical herb/shrub mid N\r\n \r\n \r\n empirical mycorrhizae min N\r\n \r\n \r\n empirical mycorrhizae mid N\r\n \r\n \r\n herb. spp. richness - open canopy (plot) N\r\n \r\n \r\n herb. spp. richness - closed canopy (plot) N\r\n \r\n \r\n herb. spp. richness - open canopy (ecoregion) N\r\n \r\n \r\n herb. spp. richness - closed canopy (ecoregion) N\r\n \r\n ;\r\n }\r\n return headers;\r\n };\r\n\r\n const categories = [\r\n 'tdep',\r\n 'cmaq',\r\n 'hist',\r\n 'rcp4.5',\r\n 'rcp8.5'\r\n ];\r\n const statistics = [\r\n 'pos-mean',\r\n 'pos-min',\r\n 'pos-percentile5',\r\n 'pos-percentile50',\r\n 'pos-percentile95',\r\n 'pos-max'\r\n ];\r\n\r\n const rows = {};\r\n\r\n const generateRows = category => {\r\n return statistics.map((statistic, i) => {\r\n let statisticLabel;\r\n if (statistic === 'pos-percentile5') {\r\n statisticLabel = statistic.replace(statistic, '5th');\r\n }\r\n else if (statistic === 'pos-percentile50') {\r\n statisticLabel = statistic.replace(statistic, '50th');\r\n }\r\n else if (statistic === 'pos-percentile95') {\r\n statisticLabel = statistic.replace(statistic, '95th');\r\n }\r\n else {\r\n statisticLabel = statistic.replace('pos-', '');\r\n }\r\n \r\n const cmip5 = category === 'hist' || category === 'rcp4.5' || category === 'rcp8.5';\r\n let categoryLabel = category === 'hist' ? 'historical' : category;\r\n\r\n if (cmip5 && props.csvDownload) {\r\n categoryLabel = 'cmip5-' + categoryLabel;\r\n }\r\n \r\n return (\r\n \r\n {category === 'hist' && statistic === 'pos-mean' && !props.csvDownload ? (\r\n \r\n
    cmip5
    \r\n \r\n ) : null}\r\n {statistic === 'pos-mean' ? (\r\n \r\n
    {categoryLabel}
    \r\n \r\n ) : null}\r\n { statistic !== 'pos-mean' && props.csvDownload &&\r\n \r\n }\r\n {statisticLabel}\r\n {tableData[category][statistic]}\r\n \r\n );\r\n });\r\n };\r\n\r\n categories.forEach(category => {\r\n rows[category] = generateRows(category);\r\n });\r\n\r\n const headers = generateHeaders();\r\n \r\n if (csvDownload) {\r\n return (\r\n \r\n \r\n {headers}\r\n \r\n \r\n {rows.tdep}\r\n {rows.cmaq}\r\n {rows.hist}\r\n {rows['rcp4.5']}\r\n {rows['rcp8.5']}\r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {headers}\r\n \r\n \r\n {rows.tdep}\r\n {rows.cmaq}\r\n {rows.hist}\r\n {rows['rcp4.5']}\r\n {rows['rcp8.5']}\r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default ExSevTable;\r\n","import React from 'react';\r\nimport { roundDecimal, getPercent } from 'js/utils/helper';\r\nimport shortid from 'shortid';\r\n\r\nconst formatValue = (val, percentage) => {\r\n\r\n if (val === 9999 || isNaN(val) || val === null) {\r\n val = 'N/A';\r\n } else if (percentage) {\r\n val = roundDecimal(val * 100);\r\n } else {\r\n val = roundDecimal(val);\r\n }\r\n return val;\r\n};\r\n\r\nconst setObject = (data, percentage, tableNumber, CLCountObj) => {\r\n\r\n let exObject;\r\n switch (tableNumber) {\r\n case 1:\r\n exObject = {\r\n // ta: data\r\n // .filter(v => (v.cl ? v.cl === 'ta' : v.ex === 'ta') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // aa: data\r\n // .filter(v => (v.cl ? v.cl === 'aa' : v.ex === 'aa') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // formin: data\r\n // .filter(v => (v.cl ? v.cl === 'formin' : v.ex === 'formin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // formid: data\r\n // .filter(v => (v.cl ? v.cl === 'formid' : v.ex === 'formid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hpsmin: data\r\n // .filter(v => (v.cl ? v.cl === 'hpsmin' : v.ex === 'hpsmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hpsmid: data\r\n // .filter(v => (v.cl ? v.cl === 'hpsmid' : v.ex === 'hpsmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // mfmin: data\r\n // .filter(v => (v.cl ? v.cl === 'mfmin' : v.ex === 'mfmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // mfmid: data\r\n // .filter(v => (v.cl ? v.cl === 'mfmid' : v.ex === 'mfmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage))\r\n ta: data\r\n .filter(v => (v.cl ? v.cl === 'ta' : v.ex === 'ta') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'cl_area': true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n aa: data\r\n .filter(v => (v.cl ? v.cl === 'aa' : v.ex === 'aa') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n formin: data\r\n .filter(v => (v.cl ? v.cl === 'formin' : v.ex === 'formin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n formid: data\r\n .filter(v => (v.cl ? v.cl === 'formid' : v.ex === 'formid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hpsmin: data\r\n .filter(v => (v.cl ? v.cl === 'hpsmin' : v.ex === 'hpsmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hpsmid: data\r\n .filter(v => (v.cl ? v.cl === 'hpsmid' : v.ex === 'hpsmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n mfmin: data\r\n .filter(v => (v.cl ? v.cl === 'mfmin' : v.ex === 'mfmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n mfmid: data\r\n .filter(v => (v.cl ? v.cl === 'mfmid' : v.ex === 'mfmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage))\r\n };\r\n break;\r\n case 2:\r\n exObject = {\r\n hsrptoc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrptoc' : v.ex === 'hsrptoc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsrptcc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrptcc' : v.ex === 'hsrptcc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsreroc: data\r\n .filter(v => (v.cl ? v.cl === 'hsreroc' : v.ex === 'hsreroc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsrercc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrercc' : v.ex === 'hsrercc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage))\r\n };\r\n break;\r\n default:\r\n // For CSV download\r\n // exObject = {\r\n // ta: data\r\n // .filter(v => (v.cl ? v.cl === 'ta' : v.ex === 'ta') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // aa: data\r\n // .filter(v => (v.cl ? v.cl === 'aa' : v.ex === 'aa') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // formin: data\r\n // .filter(v => (v.cl ? v.cl === 'formin' : v.ex === 'formin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // formid: data\r\n // .filter(v => (v.cl ? v.cl === 'formid' : v.ex === 'formid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hpsmin: data\r\n // .filter(v => (v.cl ? v.cl === 'hpsmin' : v.ex === 'hpsmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hpsmid: data\r\n // .filter(v => (v.cl ? v.cl === 'hpsmid' : v.ex === 'hpsmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // mfmin: data\r\n // .filter(v => (v.cl ? v.cl === 'mfmin' : v.ex === 'mfmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // mfmid: data\r\n // .filter(v => (v.cl ? v.cl === 'mfmid' : v.ex === 'mfmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'area' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hsrptoc: data\r\n // .filter(v => (v.cl ? v.cl === 'hsrptoc' : v.ex === 'hsrptoc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hsrptcc: data\r\n // .filter(v => (v.cl ? v.cl === 'hsrptcc' : v.ex === 'hsrptcc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hsreroc: data\r\n // .filter(v => (v.cl ? v.cl === 'hsreroc' : v.ex === 'hsreroc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage)),\r\n // hsrercc: data\r\n // .filter(v => (v.cl ? v.cl === 'hsrercc' : v.ex === 'hsrercc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n // .map(v => formatValue(v.value, percentage))\r\n exObject = {\r\n ta: data\r\n .filter(v => (v.cl ? v.cl === 'ta' : v.ex === 'ta') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n aa: data\r\n .filter(v => (v.cl ? v.cl === 'aa' : v.ex === 'aa') && (v.ex ? v.variable === 'totalns' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n formin: data\r\n .filter(v => (v.cl ? v.cl === 'formin' : v.ex === 'formin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n formid: data\r\n .filter(v => (v.cl ? v.cl === 'formid' : v.ex === 'formid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hpsmin: data\r\n .filter(v => (v.cl ? v.cl === 'hpsmin' : v.ex === 'hpsmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hpsmid: data\r\n .filter(v => (v.cl ? v.cl === 'hpsmid' : v.ex === 'hpsmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n mfmin: data\r\n .filter(v => (v.cl ? v.cl === 'mfmin' : v.ex === 'mfmin') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n mfmid: data\r\n .filter(v => (v.cl ? v.cl === 'mfmid' : v.ex === 'mfmid') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsrptoc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrptoc' : v.ex === 'hsrptoc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsrptcc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrptcc' : v.ex === 'hsrptcc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'count' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsreroc: data\r\n .filter(v => (v.cl ? v.cl === 'hsreroc' : v.ex === 'hsreroc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage)),\r\n hsrercc: data\r\n .filter(v => (v.cl ? v.cl === 'hsrercc' : v.ex === 'hsrercc') && (v.ex ? v.variable === 'totaln' : (CLCountObj ? v.statistic === 'cl_area' : true)))\r\n .map(v => formatValue(v.value, percentage))\r\n };\r\n }\r\n return exObject;\r\n};\r\n\r\nconst setCLObjectPercent = (countObjs, landcountArr, tableNumber) => {\r\n // const areaArr = countObjs.filter((obj) => obj.statistic === 'area');\r\n console.log('setCLObjectPercent: areaArr:'); \r\n const areaArr = countObjs.filter((obj) => obj.unit === 'ha');\r\n console.log(areaArr);\r\n let exObject;\r\n switch (tableNumber) {\r\n case 1:\r\n exObject = {\r\n ta: getPercent(areaArr, landcountArr, 'ta'),\r\n aa: getPercent(null, landcountArr, 'aa'),\r\n formin: getPercent(areaArr, landcountArr, 'formin'),\r\n formid: getPercent(areaArr, landcountArr, 'formid'),\r\n hpsmin: getPercent(areaArr, landcountArr, 'hpsmin'),\r\n hpsmid: getPercent(areaArr, landcountArr, 'hpsmid'),\r\n mfmin: getPercent(areaArr, landcountArr, 'mfmin'),\r\n mfmid: getPercent(areaArr, landcountArr, 'mfmid')\r\n };\r\n break;\r\n case 2:\r\n exObject = {\r\n hsrptoc: getPercent(null, landcountArr, 'hsrptoc'),\r\n hsrptcc: getPercent(null, landcountArr, 'hsrptcc'),\r\n hsreroc: getPercent(areaArr, landcountArr, 'hsreroc'),\r\n hsrercc: getPercent(areaArr, landcountArr, 'hsrercc')\r\n };\r\n break;\r\n default:\r\n exObject = {\r\n ta: getPercent(areaArr, landcountArr, 'ta'),\r\n aa: getPercent(null, landcountArr, 'aa'),\r\n formin: getPercent(areaArr, landcountArr, 'formin'),\r\n formid: getPercent(areaArr, landcountArr, 'formid'),\r\n hpsmin: getPercent(areaArr, landcountArr, 'hpsmin'),\r\n hpsmid: getPercent(areaArr, landcountArr, 'hpsmid'),\r\n mfmin: getPercent(areaArr, landcountArr, 'mfmin'),\r\n mfmid: getPercent(areaArr, landcountArr, 'mfmid'),\r\n hsrptoc: getPercent(null, landcountArr, 'hsrptoc'),\r\n hsrptcc: getPercent(null, landcountArr, 'hsrptcc'),\r\n hsreroc: getPercent(areaArr, landcountArr, 'hsreroc'),\r\n hsrercc: getPercent(areaArr, landcountArr, 'hsrercc')\r\n };\r\n }\r\n return exObject;\r\n};\r\n\r\nconst setComponent = obj => {\r\n return Object.keys(obj).map(key => {\r\n let val;\r\n if (obj[key] !== undefined && Array.isArray(obj[key])) {\r\n val = obj[key][0];\r\n } else if (obj[key] !== undefined && !Array.isArray(obj[key])) {\r\n val = obj[key];\r\n } else {\r\n val = null;\r\n }\r\n\r\n return (\r\n \r\n {(val || val === 0) ? val : 'N/A'}\r\n \r\n );\r\n });\r\n};\r\n\r\nexport const getExTableData = (data, tableNumber) => {\r\n\r\n // Critical Load Objects\r\n // const polycountObj = setObject(data.cl.filter(v => v.variable === 'poly' && v.statistic === 'area'), null, tableNumber);\r\n // const landcountObj = setObject(data.cl.filter(v => v.variable === 'land' && v.statistic === 'area'), null, tableNumber);\r\n // const countObj = setObject(data.cl.filter(v => v.statistic === 'area' || v.statistic === 'count'), null, tableNumber, true);\r\n const polycountObj = setObject(data.cl.filter(v => v.unit === 'ha' && v.statistic === 'poly_area'), null, tableNumber);\r\n const landcountObj = setObject(data.cl.filter(v => v.unit === 'ha' && v.statistic === 'land_area'), null, tableNumber);\r\n const countObjFilterFunc = v => {\r\n if (v.cl === 'aa' || v.cl === 'hsrptoc' || v.cl === 'hsrptcc'){\r\n return v.statistic === 'count' && v.unit ==='eq'\r\n } else { \r\n return v.statistic === 'cl_area' && v.unit ==='ha' }\r\n }\r\n const countObj = setObject(data.cl.filter(countObjFilterFunc), null, tableNumber, true);\r\n console.log('countObj:');\r\n console.log(countObj);\r\n // const countPercentObj = setCLObjectPercent(\r\n // data.cl.filter(v => v.statistic === 'area'),\r\n // data.cl.filter(v => v.variable === 'land' && v.statistic === 'area'), tableNumber\r\n // );\r\n const countPercentObj = setCLObjectPercent(\r\n data.cl.filter(v => v.statistic === 'cl_area' && v.unit ==='ha'),\r\n data.cl.filter(v => v.statistic === 'land_area' && v.unit === 'ha'), tableNumber\r\n );\r\n console.log('countPercentObj:');\r\n console.log(countPercentObj);\r\n console.log('getExTableData: data:')\r\n console.log(data)\r\n // Exceedence Extent Objects\r\n const tdepObj = setObject(data.ex.filter(v => v.dep === 'tdep' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmaqObj = setObject(data.ex.filter(v => v.dep === 'cmaq' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const nadpObj = setObject(data.ex.filter(v => v.dep === 'nadp' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmip5histObj = setObject(data.ex.filter(v => v.dep === 'cmip5hist' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmip5rcp26Obj = setObject(data.ex.filter(v => v.dep === 'cmip5rcp26' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmip5rcp45Obj = setObject(data.ex.filter(v => v.dep === 'cmip5rcp45' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmip5rcp60Obj = setObject(data.ex.filter(v => v.dep === 'cmip5rcp60' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n const cmip5rcp85Obj = setObject(data.ex.filter(v => v.dep === 'cmip5rcp85' && v.statistic === 'extent' && (v.variable === 'totalns' || v.variable === 'totaln')), null, tableNumber); //RTI changed percentage=true to null \r\n\r\n // Critical Load Rows\r\n const polycount = setComponent(polycountObj);\r\n const landcount = setComponent(landcountObj);\r\n const count = setComponent(countObj);\r\n const countPercent = setComponent(countPercentObj);\r\n const tdep = setComponent(tdepObj);\r\n\r\n console.log('getExTableData: tdepObj:')\r\n console.log(tdepObj)\r\n // Exceedence Extent Rows\r\n const cmaq = setComponent(cmaqObj);\r\n const nadp = setComponent(nadpObj);\r\n const cmip5hist = setComponent(cmip5histObj);\r\n const cmip5rcp26 = setComponent(cmip5rcp26Obj);\r\n const cmip5rcp45 = setComponent(cmip5rcp45Obj);\r\n const cmip5rcp60 = setComponent(cmip5rcp60Obj);\r\n const cmip5rcp85 = setComponent(cmip5rcp85Obj);\r\n\r\n return {\r\n polycount,\r\n landcount,\r\n count,\r\n countPercent,\r\n tdep,\r\n cmaq,\r\n nadp,\r\n cmip5hist,\r\n cmip5rcp26,\r\n cmip5rcp45,\r\n cmip5rcp60,\r\n cmip5rcp85\r\n };\r\n};\r\n","import React from 'react';\r\nimport { getExTableData } from 'js/utils/exTableHelper';\r\nconst ExTable = props => {\r\n const data = props.data;\r\n const {\r\n polycount,\r\n landcount,\r\n count,\r\n countPercent,\r\n tdep,\r\n cmaq,\r\n cmip5hist,\r\n cmip5rcp45,\r\n cmip5rcp85\r\n } = getExTableData(data, props.tableNumber);\r\n\r\n\r\n const { csvDownload, tableNumber } = props;\r\n\r\n const generateHeaders = () => {\r\n let headerRow;\r\n switch (tableNumber) {\r\n case 1:\r\n headerRow = \r\n \r\n critical load\r\n \r\n \r\n forest acidification\r\n \r\n \r\n aquatic acidification\r\n \r\n \r\n empirical forest min\r\n \r\n \r\n empirical forest mid\r\n \r\n \r\n empirical herb/shrub min\r\n \r\n \r\n empirical herb/shrub mid\r\n \r\n \r\n empirical mycorrhizae min\r\n \r\n \r\n empirical mycorrhizae mid\r\n \r\n ;\r\n break;\r\n case 2:\r\n headerRow = \r\n \r\n critical load\r\n \r\n \r\n herb. spp. richness - open canopy (plot)\r\n \r\n \r\n herb. spp. richness - closed canopy (plot)\r\n \r\n \r\n herb. spp. richness - open canopy (ecoregion)\r\n \r\n \r\n herb. spp. richness - closed canopy (ecoregion)\r\n \r\n ;\r\n break;\r\n default:\r\n headerRow = \r\n \r\n critical load\r\n \r\n \r\n forest acidification\r\n \r\n \r\n aquatic acidification\r\n \r\n \r\n empirical forest min\r\n \r\n \r\n empirical forest mid\r\n \r\n \r\n empirical herb/shrub min\r\n \r\n \r\n empirical herb/shrub mid\r\n \r\n \r\n empirical mycorrhizae mid\r\n \r\n \r\n empirical mycorrhizae min\r\n \r\n \r\n herb. spp. richness - open canopy (plot)\r\n \r\n \r\n herb. spp. richness - closed canopy (plot)\r\n \r\n \r\n herb. spp. richness - open canopy (ecoregion)\r\n \r\n \r\n herb. spp. richness - closed canopy (ecoregion)\r\n \r\n ;\r\n }\r\n return headerRow;\r\n };\r\n\r\n const generateDep = () => {\r\n let depositionRow;\r\n switch (tableNumber) {\r\n case 1:\r\n depositionRow = [\r\n N+S,\r\n N+S,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N\r\n ];\r\n break;\r\n case 2:\r\n depositionRow = [\r\n N,\r\n N,\r\n N,\r\n N\r\n ];\r\n break;\r\n default:\r\n depositionRow = [\r\n N+S,\r\n N+S,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N,\r\n N\r\n ];\r\n }\r\n return depositionRow;\r\n };\r\n\r\n const headers = generateHeaders();\r\n const deposition = generateDep();\r\n\r\n return (\r\n \r\n \r\n {headers}\r\n \r\n \r\n \r\n \r\n {deposition}\r\n \r\n \r\n \r\n {polycount}\r\n \r\n \r\n \r\n {landcount}\r\n \r\n \r\n \r\n {count}\r\n \r\n \r\n \r\n {countPercent}\r\n \r\n \r\n \r\n {tdep}\r\n \r\n \r\n \r\n {cmaq}\r\n \r\n \r\n {!csvDownload &&\r\n \r\n }\r\n \r\n {cmip5hist}\r\n \r\n \r\n \r\n {cmip5rcp45}\r\n \r\n \r\n \r\n {cmip5rcp85}\r\n \r\n \r\n
    deposition
    Total Land Unit Area (ha)
    Total Land Area(HA)
    Area(HA)/# with cl
    % area with cl
    tdep (%)
    cmaq (%)
    \r\n
    cmip5
    \r\n
    {'historical (%)'}
    {'rcp4.5 (%)'}
    {'rcp8.5 (%)'}
    \r\n );\r\n};\r\n\r\nexport default ExTable;\r\n","import React from 'react';\r\nimport { roundDecimal } from 'js/utils/helper';\r\nimport shortid from 'shortid';\r\n\r\nconst formatValue = (val) => {\r\n if (val === 9999 || isNaN(val) || val === null) {\r\n val = 'N/A';\r\n } else {\r\n val = roundDecimal(val);\r\n }\r\n return val;\r\n};\r\n\r\nconst setDepObject = data => {\r\n return {\r\n records: { val: data.filter(v => v.statistic === 'count').map(v => v.value) },\r\n mean: {\r\n val: data.filter(v => v.statistic === 'mean').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'mean').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n std: {\r\n val: data.filter(v => v.statistic === 'std').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'std').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n min: {\r\n val: data.filter(v => v.statistic === 'min').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'min').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n percentile5: {\r\n val: data.filter(v => v.statistic === 'percentile5').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile5').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n percentile50: {\r\n val: data.filter(v => v.statistic === 'percentile50').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile50').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n percentile95: {\r\n val: data.filter(v => v.statistic === 'percentile95').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'percentile95').map(v => formatValue(v.kgVal))\r\n\r\n },\r\n max: {\r\n val: data.filter(v => v.statistic === 'max').map(v => formatValue(v.value)),\r\n kgVal: data.filter(v => v.statistic === 'max').map(v => formatValue(v.kgVal))\r\n\r\n }\r\n };\r\n};\r\n\r\nconst setComponent = (obj, highlight) => {\r\n return Object.keys(obj).map((key) => {\r\n const val = obj[key].val ? obj[key].val[0] : null;\r\n const kgVal = obj[key].kgVal ? obj[key].kgVal[0] : null;\r\n\r\n if (kgVal && kgVal !== 'N/A') {\r\n return \r\n {obj[key].val} ({obj[key].kgVal})\r\n ;\r\n } else {\r\n return \r\n {(val || val === 0) ? val : 'N/A'}\r\n ;\r\n }\r\n });\r\n};\r\n\r\nexport const getDepTableData = (data) => {\r\n const tdepObj = setDepObject(data.filter(v => v.dep === 'tdep'));\r\n const cmaqObj = setDepObject(data.filter(v => v.dep === 'cmaq'));\r\n const nadpObj = setDepObject(data.filter(v => v.dep === 'nadp'));\r\n const cmip5histObj = setDepObject(data.filter(v => v.dep === 'cmip5hist'));\r\n const cmip5rcp26Obj = setDepObject(data.filter(v => v.dep === 'cmip5rcp26'));\r\n const cmip5rcp45Obj = setDepObject(data.filter(v => v.dep === 'cmip5rcp45'));\r\n const cmip5rcp60Obj = setDepObject(data.filter(v => v.dep === 'cmip5rcp60'));\r\n const cmip5rcp85Obj = setDepObject(data.filter(v => v.dep === 'cmip5rcp85'));\r\n\r\n const tdep = setComponent(tdepObj);\r\n const cmaq = setComponent(cmaqObj);\r\n const nadp = setComponent(nadpObj);\r\n const cmip5hist = setComponent(cmip5histObj);\r\n const cmip5rcp26 = setComponent(cmip5rcp26Obj, true);\r\n const cmip5rcp45 = setComponent(cmip5rcp45Obj);\r\n const cmip5rcp60 = setComponent(cmip5rcp60Obj, true);\r\n const cmip5rcp85 = setComponent(cmip5rcp85Obj);\r\n\r\n return {\r\n tdep,\r\n cmaq,\r\n nadp,\r\n cmip5hist,\r\n cmip5rcp26,\r\n cmip5rcp45,\r\n cmip5rcp60,\r\n cmip5rcp85\r\n };\r\n};\r\n","import React from 'react';\r\nimport { getDepTableData } from 'js/utils/depTableHelper';\r\nconst DepTable = props => {\r\n const data = props.data;\r\n const {\r\n tdep,\r\n cmaq,\r\n cmip5hist,\r\n cmip5rcp45,\r\n cmip5rcp85\r\n } = getDepTableData(data);\r\n\r\n return (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{!props.csvDownload && }\r\n\t\t\t\t\t\r\n\t\t\t\t\t{tdep}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{!props.csvDownload && }\r\n\t\t\t\t\t\r\n\t\t\t\t\t{cmaq}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{!props.csvDownload && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{cmip5hist}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{cmip5rcp45}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{cmip5rcp85}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    dataset# recordsmeanstandard deviationmin5th50th95thmax
     tdep
     cmaq
    \r\n\t\t\t\t\t\t\t
    cmip5
    \r\n\t\t\t\t\t\t
    {props.csvDownload ? \"cmip5-historical\" : \"historical\"}
    {props.csvDownload ? \"cmip5-rcp4.5\" : \"rcp4.5\"}
    {props.csvDownload ? \"cmip5-rcp8.5\" : \"rcp8.5\"}
    \r\n\t);\r\n};\r\n\r\nexport default DepTable;\r\n","import { getImageURL, getCoverImages, getOverlayImages } from 'js/utils/canvas.js';\r\nimport logo1 from 'images/logo1.png';\r\nimport logo2 from 'images/logo2.png';\r\nimport logo3 from 'images/logo3.png';\r\n\r\nexport const createCover = (depYears, exYears, props, doc) => {\r\n return new Promise((resolve, reject) => {\r\n const left = 25;\r\n let top = 580.7;\r\n const title = {\r\n color: '#FFF',\r\n size: 25,\r\n top: top + 20\r\n };\r\n const description = {\r\n color: '#FFF',\r\n size: 12\r\n };\r\n const line = {\r\n color: '#657d89',\r\n right: 380\r\n };\r\n const textOption = {\r\n color: '#FFF',\r\n size: 12\r\n };\r\n // Create the background image and the two colored blocks\r\n const createCanvas = img => {\r\n // doc.rect(0, 0, 650, top).fillAndStroke('#000');\r\n doc.rect(0, top, 612, 212).fillAndStroke('#46565f');\r\n doc.rect(400, top, 612, 212).fillAndStroke('#5c6a73');\r\n doc.image(img, 0, 0, { width: 612, height: top });\r\n };\r\n const createUSA = img => {\r\n doc.image(img, 400, top, { width: 214, height: 212 });\r\n };\r\n const createLogo = (img, pos, name) => {\r\n const topPos = name.length > 28 ? top + 138 : top + 150;\r\n doc.image(img, pos, topPos, { width: 40, height: 40 });\r\n };\r\n const createTitle = name => {\r\n if (name.length > 28) {\r\n top = 605;\r\n }\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .text(name, left, title.top, {width: 350});\r\n };\r\n const createDesc = (dep, ex) => {\r\n doc\r\n .fillColor(description.color)\r\n .fontSize(description.size)\r\n .text(\r\n `Deposition: ${dep}, Critical Load (CL) Exceedance: ${ex}`,\r\n left,\r\n top + 55\r\n );\r\n };\r\n const createLine = () => {\r\n doc\r\n .moveTo(left, top + 70)\r\n .lineTo(line.right, top + 70)\r\n .lineWidth(2)\r\n .fill(line.color)\r\n .stroke();\r\n };\r\n const createText = (option, text, posTop) => {\r\n doc\r\n .fillColor(textOption.color)\r\n .fontSize(textOption.size)\r\n .text(`${option}:`, left, posTop, {\r\n width: 110,\r\n align: 'right',\r\n height: 10\r\n })\r\n .font('Helvetica-Bold')\r\n .text(`${text}`, left + 120, posTop, {\r\n height: 10\r\n })\r\n .font('Helvetica');\r\n };\r\n\r\n Promise.all([getCoverImages(props.geometry), getOverlayImages(props.geometry)])\r\n .then(results => {\r\n return Promise.all([getImageURL(results[0]), getImageURL(results[1]), getImageURL(logo1), getImageURL(logo2), getImageURL(logo3)]);\r\n })\r\n .then(results => {\r\n createCanvas(results[0]);\r\n createUSA(results[1]);\r\n createTitle(props.name);\r\n createDesc(depYears, exYears);\r\n createLine();\r\n createText('Area Classification', props.title, top + 80);\r\n createText('Agency', props.agency, top + 100);\r\n createText('Total Area', `${props.area} ha`, top + 120);\r\n createLogo(results[2], 92, props.name);\r\n createLogo(results[3], 161.4, props.name);\r\n createLogo(results[4], 230.8, props.name);\r\n resolve();\r\n });\r\n });\r\n};\r\n","export default __webpack_public_path__ + \"static/media/chartLegendMean.34cd58bf.png\";","import { getShortChartData } from 'js/utils/shortChartHelper';\r\nconst Highcharts = require('highcharts');\r\nrequire('highcharts/modules/exporting')(Highcharts);\r\nrequire('highcharts/modules/series-label')(Highcharts);\r\nrequire('highcharts/highcharts-more')(Highcharts);\r\n\r\nexport const createHighchartShort = (\r\n id,\r\n data,\r\n showKG,\r\n selectedYear,\r\n startYear,\r\n title,\r\n subtitle,\r\n chartType\r\n) => {\r\n\r\n console.log(title + ' ' + subtitle);\r\n\r\n // Trends charts are in the CLReport\r\n // Extent charts are in ExReport\r\n const trendsChart = chartType === 'trends';\r\n const extentChart = chartType === 'extent';\r\n\r\n const {\r\n max,\r\n min,\r\n kgMax,\r\n kgMin,\r\n tdepMean,\r\n tdepArea,\r\n cmaqMean,\r\n cmaqArea,\r\n nadpMean,\r\n nadpArea,\r\n tickInterval\r\n } = getShortChartData(data, trendsChart ? 'mean' : 'extent');\r\n return Highcharts.chart(id, {\r\n title: {\r\n align: 'left',\r\n text: title,\r\n style: {\r\n fontSize: '27.5px'\r\n }\r\n },\r\n\r\n subtitle: {\r\n align: 'left',\r\n text: subtitle,\r\n style: {\r\n fontSize: '22px'\r\n }\r\n },\r\n\r\n chart: {\r\n borderColor: '#dddddd',\r\n borderWidth: 1,\r\n type: 'line'\r\n },\r\n\r\n credits: false,\r\n\r\n plotOptions: {\r\n series: {\r\n pointStart: startYear,\r\n marker: {\r\n enabled: true,\r\n symbol: 'circle',\r\n radius: 2\r\n },\r\n label: {\r\n enabled: false\r\n }\r\n }\r\n },\r\n\r\n xAxis: {\r\n labels: {\r\n style: {\r\n fontSize: '18px'\r\n }\r\n }\r\n },\r\n\r\n yAxis: showKG\r\n ? [\r\n {\r\n gridLineWidth: 1,\r\n title: {\r\n text: 'eq ha\\u207B\\u00B9 yr\\u207B\\u00B9',\r\n style: {\r\n fontSize: '22px'\r\n }\r\n },\r\n labels: {\r\n format: '{value}',\r\n style: {\r\n fontSize: '18px'\r\n }\r\n },\r\n min: min,\r\n max: max\r\n },\r\n {\r\n gridLineWidth: 0,\r\n title: {\r\n text: 'kg ha\\u207B\\u00B9 yr\\u207B\\u00B9',\r\n style: {\r\n fontSize: '22px'\r\n }\r\n },\r\n labels: {\r\n format: '{value}',\r\n style: {\r\n fontSize: '18px'\r\n }\r\n },\r\n min: kgMin,\r\n max: kgMax,\r\n opposite: true\r\n }\r\n ]\r\n : [\r\n {\r\n gridLineWidth: 1,\r\n title: {\r\n text: extentChart ? '%' : 'eq ha\\u207B\\u00B9 yr\\u207B\\u00B9',\r\n style: {\r\n fontSize: '22px'\r\n }\r\n },\r\n labels: {\r\n format: '{value}',\r\n style: {\r\n fontSize: '18px'\r\n }\r\n },\r\n min: min,\r\n max: max,\r\n tickInterval\r\n }\r\n ],\r\n\r\n legend: {\r\n enabled: false\r\n },\r\n\r\n series: extentChart\r\n ? [\r\n {\r\n type: 'line',\r\n color: '#009988',\r\n name: 'TDEP',\r\n label: { enabled: false },\r\n data: tdepMean\r\n },\r\n {\r\n type: 'line',\r\n color: '#0077bb',\r\n name: 'CMAQ',\r\n label: { enabled: false },\r\n data: cmaqMean\r\n },\r\n {\r\n type: 'line',\r\n color: '#cc3311',\r\n name: 'NADP',\r\n label: { enabled: false },\r\n data: nadpMean\r\n }\r\n ] : [\r\n {\r\n type: 'line',\r\n color: '#009988',\r\n name: 'TDEP',\r\n label: { enabled: false },\r\n data: tdepMean\r\n },\r\n {\r\n type: 'arearange',\r\n color: '#b7fff7',\r\n data: tdepArea\r\n },\r\n {\r\n type: 'line',\r\n color: '#0077bb',\r\n name: 'CMAQ',\r\n label: { enabled: false },\r\n data: cmaqMean\r\n },\r\n {\r\n type: 'arearange',\r\n color: '#bee7ff',\r\n data: cmaqArea\r\n },\r\n {\r\n type: 'line',\r\n color: '#cc3311',\r\n name: 'NADP',\r\n label: { enabled: false },\r\n data: nadpMean\r\n },\r\n {\r\n type: 'arearange',\r\n color: '#fad2c9',\r\n data: nadpArea\r\n }\r\n ],\r\n\r\n responsive: {\r\n rules: [\r\n {\r\n condition: {\r\n maxWidth: 500\r\n },\r\n chartOptions: {\r\n legend: {\r\n layout: 'horizontal',\r\n align: 'center',\r\n verticalAlign: 'bottom'\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n};\r\n","export const getShortChartData = (data, statistic) => {\r\n console.log(\"getShortChartData in shortChartHelper\");\r\n let dataObj = data;\r\n // Exceedance and Deposition trends charts use mean, percentile5, and percentile95 statistic values\r\n // Exceeedance extent charts use extent statistic values\r\n\r\n if (!dataObj[statistic] && statistic === 'mean') {\r\n dataObj = {\r\n mean: data.filter(v => v.statistic === 'mean'),\r\n percentile5: data.filter(v => v.statistic === 'percentile5'),\r\n percentile95: data.filter(v => v.statistic === 'percentile95')\r\n };\r\n }\r\n const allData = statistic === 'mean' ? dataObj.mean.concat(dataObj.percentile5).concat(dataObj.percentile95) : dataObj[statistic];\r\n const values = allData\r\n .filter(v => v.dep === 'tdep' || v.dep === 'cmaq' || v.dep === 'nadp')\r\n .map(v => v.value === 9999 || v.value === 999900 ? null : v.value);\r\n const kgValues = statistic !== 'extent' ? allData\r\n .filter(v => v.dep === 'tdep' || v.dep === 'cmaq' || v.dep === 'nadp')\r\n .map(v => v.kgVal === 9999 || v.kgVal === 999900 ? null : v.kgVal) : null;\r\n\r\n let max =\r\n Math.ceil(Math.max(...values)) > 0\r\n ? Math.ceil(Math.max(...values)) * 1.2\r\n : Math.ceil(Math.max(...values)) * 0.8;\r\n let min =\r\n Math.floor(Math.min(...values)) > 0\r\n ? Math.floor(Math.min(...values)) * 0.8\r\n : Math.floor(Math.min(...values)) * 1.2;\r\n const kgMax = statistic !== 'extent' ?\r\n (Math.ceil(Math.max(...kgValues)) > 0\r\n ? Math.ceil(Math.max(...kgValues)) * 1.2\r\n : Math.ceil(Math.max(...kgValues)) * 0.8) : null;\r\n const kgMin = statistic !== 'extent' ?\r\n (Math.floor(Math.min(...kgValues)) > 0\r\n ? Math.floor(Math.min(...kgValues)) * 0.8\r\n : Math.floor(Math.min(...kgValues)) * 1.2) : null;\r\n let tickInterval = null;\r\n if (statistic === 'extent') {\r\n min = 0;\r\n max = 120;\r\n tickInterval = 20;\r\n }\r\n const tdepMean = dataObj[statistic]\r\n .filter(v => v.dep === 'tdep' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmaqMean = dataObj[statistic]\r\n .filter(v => v.dep === 'cmaq' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const nadpMean = dataObj[statistic]\r\n .filter(v => v.dep === 'nadp' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n\r\n const tdep5 = {};\r\n const tdep95 = {};\r\n const cmaq5 = {};\r\n const cmaq95 = {};\r\n const nadp5 = {};\r\n const nadp95 = {};\r\n\r\n if (statistic === 'mean' ) {\r\n dataObj.percentile5.forEach(v => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n\r\n if (v.dep === 'tdep') {\r\n tdep5[v.year] = value;\r\n } else if (v.dep === 'cmaq') {\r\n cmaq5[v.year] = value;\r\n } else if (v.dep === 'nadp') {\r\n nadp5[v.year] = value;\r\n }\r\n });\r\n dataObj.percentile95.forEach(v => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n\r\n if (v.dep === 'tdep') {\r\n tdep95[v.year] = value;\r\n } else if (v.dep === 'cmaq') {\r\n cmaq95[v.year] = value;\r\n } else if (v.dep === 'nadp') {\r\n nadp95[v.year] = value;\r\n }\r\n });\r\n const tdepArea = tdepMean.length && tdepMean.slice().map(v => {\r\n //if (tdep5[v.x] !== null && tdep95[v.x] !== null) {\r\n return {\r\n x: v.x,\r\n low: tdep5[v.x] === undefined ? v.y : tdep5[v.x],\r\n high: tdep95[v.x] === undefined ? v.y : tdep95[v.x],\r\n marker: { enabled: false }\r\n };\r\n //}\r\n\r\n });\r\n const cmaqArea = cmaqMean.length && cmaqMean.slice().map(v => {\r\n //if (cmaq5[v.x] !== null && cmaq95[v.x] !== null) {\r\n return {\r\n x: v.x,\r\n low: cmaq5[v.x] === undefined ? v.y : cmaq5[v.x],\r\n high: cmaq95[v.x] === undefined ? v.y : cmaq95[v.x],\r\n marker: { enabled: false }\r\n };\r\n //}\r\n });\r\n const nadpArea = nadpMean.length && nadpMean.slice().map(v => {\r\n //if (nadp5[v.x] !== null && nadp95[v.x] !== null) {\r\n return {\r\n x: v.x,\r\n low: nadp5[v.x] === undefined ? v.y : nadp5[v.x],\r\n high: nadp95[v.x] === undefined ? v.y : nadp95[v.x],\r\n marker: { enabled: false }\r\n };\r\n //}\r\n });\r\n console.log({\r\n\t\t\tmax,\r\n\t\t\tmin,\r\n\t\t\tkgMax,\r\n\t\t\tkgMin,\r\n\t\t\ttdepMean,\r\n\t\t\ttdepArea,\r\n\t\t\tcmaqMean,\r\n\t\t\tcmaqArea,\r\n\t\t\tnadpMean,\r\n\t\t\tnadpArea,\r\n\t\t});\r\n return {\r\n max,\r\n min,\r\n kgMax,\r\n kgMin,\r\n tdepMean,\r\n tdepArea,\r\n cmaqMean,\r\n cmaqArea,\r\n nadpMean,\r\n nadpArea\r\n };\r\n } else {\r\n console.log({\r\n\t\t\tmax,\r\n\t\t\tmin,\r\n\t\t\tkgMax,\r\n\t\t\tkgMin,\r\n\t\t\ttdepMean,\r\n\t\t\tcmaqMean,\r\n\t\t\tnadpMean,\r\n\t\t\ttickInterval,\r\n\t\t});\r\n return {\r\n max,\r\n min,\r\n kgMax,\r\n kgMin,\r\n tdepMean,\r\n cmaqMean,\r\n nadpMean,\r\n tickInterval\r\n };\r\n }\r\n};\r\n","import { getLongChartData } from 'js/utils/longChartHelper';\r\nconst Highcharts = require('highcharts');\r\nrequire('highcharts/modules/exporting')(Highcharts);\r\nrequire('highcharts/modules/series-label')(Highcharts);\r\nrequire('highcharts/highcharts-more')(Highcharts);\r\n\r\nexport const createHighchartLong = (\r\n id,\r\n data,\r\n showKG,\r\n selectedYear,\r\n title,\r\n subtitle,\r\n chartType\r\n) => {\r\n // Trends charts are in the CLReport\r\n // Extent charts are in ExReport\r\n const trendsChart = chartType === 'trends';\r\n const extentChart = chartType === 'extent';\r\n\r\n const {\r\n max,\r\n min,\r\n kgMax,\r\n kgMin,\r\n tdep,\r\n cmaq,\r\n nadp,\r\n cmip5hist,\r\n cmip5rcp26,\r\n cmip5rcp45,\r\n cmip5rcp60,\r\n cmip5rcp85,\r\n tickInterval\r\n } = getLongChartData(data, trendsChart ? 'mean' : 'extent');\r\n\r\n return Highcharts.chart(id, {\r\n\t\ttitle: {\r\n\t\t\talign: \"left\",\r\n\t\t\ttext: title,\r\n\t\t\tstyle: {\r\n\t\t\t\tfontSize: \"21.5px\",\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\tsubtitle: {\r\n\t\t\talign: \"left\",\r\n\t\t\ttext: subtitle,\r\n\t\t\tstyle: {\r\n\t\t\t\tfontSize: \"16.75px\",\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\tchart: {\r\n\t\t\tborderColor: \"#dddddd\",\r\n\t\t\tborderWidth: 1,\r\n\t\t\ttype: \"line\",\r\n\t\t},\r\n\r\n\t\tcredits: false,\r\n\r\n\t\tplotOptions: {\r\n\t\t\tseries: {\r\n\t\t\t\tpointStart: 1850,\r\n\t\t\t\tmarker: {\r\n\t\t\t\t\tenabled: true,\r\n\t\t\t\t\tsymbol: \"circle\",\r\n\t\t\t\t\tradius: 1\r\n\t\t\t\t},\r\n\t\t\t\tlabel: {\r\n\t\t\t\t\tenabled: false\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\txAxis: {\r\n\t\t\tgridLineWidth: 1,\r\n\t\t\tlabels: {\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tfontSize: \"14px\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tplotLines: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcolor: \"#000\",\r\n\t\t\t\t\twidth: 1,\r\n\t\t\t\t\tvalue: selectedYear,\r\n\t\t\t\t\tzIndex: 5,\r\n\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\ttext: selectedYear.toString(),\r\n\t\t\t\t\t\trotation: 0,\r\n\t\t\t\t\t\tx: 20,\r\n\t\t\t\t\t\ty: 35,\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\r\n\t\tyAxis: showKG\r\n\t\t\t? [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tgridLineWidth: 1,\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\ttext: \"eq ha\\u207B\\u00B9 yr\\u207B\\u00B9\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"17px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabels: {\r\n\t\t\t\t\t\t\tformat: \"{value}\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"14px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmin: min,\r\n\t\t\t\t\t\tmax: max,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tgridLineWidth: 0,\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\ttext: \"kg ha\\u207B\\u00B9 yr\\u207B\\u00B9\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"17px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabels: {\r\n\t\t\t\t\t\t\tformat: \"{value}\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"14px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmin: kgMin,\r\n\t\t\t\t\t\tmax: kgMax,\r\n\t\t\t\t\t\topposite: true,\r\n\t\t\t\t\t},\r\n\t\t\t ]\r\n\t\t\t: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tgridLineWidth: 1,\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\ttext: extentChart ? \"%\" : \"eq ha\\u207B\\u00B9 yr\\u207B\\u00B9\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"17px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabels: {\r\n\t\t\t\t\t\t\tformat: \"{value}\",\r\n\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\tfontSize: \"14px\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttickInterval,\r\n\t\t\t\t\t\tmin: min,\r\n\t\t\t\t\t\tmax: max,\r\n\t\t\t\t\t},\r\n\t\t\t ],\r\n\r\n\t\tlegend: {\r\n\t\t\tenabled: false,\r\n\t\t},\r\n\r\n\t\tseries: [\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tcolor: \"#009988\",\r\n\t\t\t\tname: \"TDEP\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: tdep,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tcolor: \"#0077bb\",\r\n\t\t\t\tname: \"CMAQ\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmaq,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tcolor: \"#cc3311\",\r\n\t\t\t\tname: \"NADP\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: nadp,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tcolor: \"#fb9a29\",\r\n\t\t\t\tname: \"HIST\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmip5hist,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tdashStyle: \"ShortDash\",\r\n\t\t\t\tcolor: \"#fec44f\",\r\n\t\t\t\tname: \"RCP26\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmip5rcp26,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tdashStyle: \"ShortDash\",\r\n\t\t\t\tcolor: \"#fec44f\",\r\n\t\t\t\tname: \"RCP45\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmip5rcp45,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tdashStyle: \"ShortDash\",\r\n\t\t\t\tcolor: \"#fec44f\",\r\n\t\t\t\tname: \"RCP60\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmip5rcp60,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttype: \"line\",\r\n\t\t\t\tdashStyle: \"ShortDash\",\r\n\t\t\t\tcolor: \"#fec44f\",\r\n\t\t\t\tname: \"RCP85\",\r\n\t\t\t\tlabel: { enabled: false },\r\n\t\t\t\tdata: cmip5rcp85,\r\n\t\t\t},\r\n\t\t],\r\n\t\tresponsive: {\r\n\t\t\trules: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\tmaxWidth: 500,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tchartOptions: {\r\n\t\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\t\tlayout: \"horizontal\",\r\n\t\t\t\t\t\t\talign: \"center\",\r\n\t\t\t\t\t\t\tverticalAlign: \"bottom\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t});\r\n};\r\n","export const getLongChartData = (data, statistic) => {\r\n console.log(\"getLongChartData in longChartHelper\");\r\n let dataObj = data;\r\n // Exceedance and Deposition trends charts use mean statistic values\r\n // Exceeedance extent charts use extent statistic values\r\n if (!dataObj[statistic] && statistic === 'mean') {\r\n dataObj = {\r\n mean: data.filter(v => v.statistic === 'mean')\r\n };\r\n }\r\n\r\n const allData = dataObj[statistic];\r\n const values = allData\r\n .filter(\r\n v => (\r\n v.dep === 'tdep' ||\r\n v.dep === 'cmaq' ||\r\n v.dep === 'nadp' ||\r\n v.dep === 'cmip5hist' ||\r\n v.dep === 'cmip5rcp26' ||\r\n v.dep === 'cmip5rcp45' ||\r\n v.dep === 'cmip5rcp60' ||\r\n v.dep === 'cmip5rcp85'\r\n )\r\n )\r\n .map(v => v.value === 9999 || v.value === 999900 ? null : v.value);\r\n const kgValues = statistic !== 'extent' ? allData\r\n .filter(\r\n v => (\r\n v.dep === 'tdep' ||\r\n v.dep === 'cmaq' ||\r\n v.dep === 'nadp' ||\r\n v.dep === 'cmip5hist' ||\r\n v.dep === 'cmip5rcp26' ||\r\n v.dep === 'cmip5rcp45' ||\r\n v.dep === 'cmip5rcp60' ||\r\n v.dep === 'cmip5rcp85'\r\n )\r\n )\r\n .map(v => v.kgVal === 9999 || v.kgVal === 999900 ? null : v.kgVal) : null;\r\n let max =\r\n Math.ceil(Math.max(...values)) > 0\r\n ? Math.ceil(Math.max(...values)) * 1.2\r\n : Math.ceil(Math.max(...values)) * 0.8;\r\n let min =\r\n Math.floor(Math.min(...values)) > 0\r\n ? Math.floor(Math.min(...values)) * 0.8\r\n : Math.floor(Math.min(...values)) * 1.2;\r\n const kgMax = statistic !== 'extent' ?\r\n (Math.ceil(Math.max(...kgValues)) > 0\r\n ? Math.ceil(Math.max(...kgValues)) * 1.2\r\n : Math.ceil(Math.max(...kgValues)) * 0.8) : null;\r\n const kgMin = statistic !== 'extent' ?\r\n (Math.floor(Math.min(...kgValues)) > 0\r\n ? Math.floor(Math.min(...kgValues)) * 0.8\r\n : Math.floor(Math.min(...kgValues)) * 1.2) : null;\r\n let tickInterval = null;\r\n if (statistic === 'extent') {\r\n // set static values for Exceedance Extent charts\r\n console.log(min, max)\r\n min = 0;\r\n max = 120;\r\n tickInterval = 20;\r\n }\r\n const tdep = dataObj[statistic]\r\n .filter(v => v.dep === 'tdep' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmaq = dataObj[statistic]\r\n .filter(v => v.dep === 'cmaq' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const nadp = dataObj[statistic]\r\n .filter(v => v.dep === 'nadp' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmip5hist = dataObj[statistic]\r\n .filter(v => v.dep === 'cmip5hist' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmip5rcp26 = dataObj[statistic]\r\n .filter(v => v.dep === 'cmip5rcp26' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmip5rcp45 = dataObj[statistic]\r\n .filter(v => v.dep === 'cmip5rcp45' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmip5rcp60 = dataObj[statistic]\r\n .filter(v => v.dep === 'cmip5rcp60' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n const cmip5rcp85 = dataObj[statistic]\r\n .filter(v => v.dep === 'cmip5rcp85' && v.year)\r\n .map((v, i, arr) => {\r\n const value = v.value === 9999 || v.value === 999900 ? null : v.value;\r\n return {\r\n x: v.year,\r\n y: value\r\n };\r\n })\r\n .sort((a, b) => a.x - b.x);\r\n\r\n console.log({\r\n\t\tmax,\r\n\t\tmin,\r\n\t\tkgMax,\r\n\t\tkgMin,\r\n\t\ttdep,\r\n\t\tcmaq,\r\n\t\tnadp,\r\n\t\tcmip5hist,\r\n\t\tcmip5rcp26,\r\n\t\tcmip5rcp45,\r\n\t\tcmip5rcp60,\r\n\t\tcmip5rcp85,\r\n\t\ttickInterval,\r\n\t});\r\n\r\n return {\r\n max,\r\n min,\r\n kgMax,\r\n kgMin,\r\n tdep,\r\n cmaq,\r\n nadp,\r\n cmip5hist,\r\n cmip5rcp26,\r\n cmip5rcp45,\r\n cmip5rcp60,\r\n cmip5rcp85,\r\n tickInterval\r\n };\r\n};\r\n","import React from 'react';\r\nimport CLTable from 'js/components/table/CLTable';\r\nimport ReactDOM from 'react-dom';\r\nimport chartLegendMean from 'images/chartLegendMean.png';\r\nimport { createHighchartShort } from 'js/components/chart/HighchartShortTerm';\r\nimport { createHighchartLong } from 'js/components/chart/HighchartLongTerm';\r\nimport { getImageURL, getTableImage } from 'js/utils/canvas.js';\r\nimport shortid from 'shortid';\r\nimport { reportDefaults } from 'js/config/config';\r\nimport { setReportStatusText } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\n\r\nexport const createCL = (exceedanceRange, exceedanceYear, data, props, doc) => {\r\n return new Promise((resolve, reject) => {\r\n store.dispatch(setReportStatusText('Building Critical Loads Section'));\r\n // Create new page\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n const year = exceedanceRange === '1' ? '1-Year' : '3-Year Average';\r\n const cl = [\r\n {\r\n symbol: 'CL',\r\n title: 'Critical Loads (CL)',\r\n color: '#555555'\r\n },\r\n {\r\n symbol: 'E1',\r\n title: `CL Exceedance Trends (${year})`,\r\n color: '#555555'\r\n },\r\n {\r\n symbol: 'E2',\r\n title: `Forest Acidification (N+S, ${year})`,\r\n color: '#eedd88',\r\n variable: 'totalns',\r\n ex: 'ta'\r\n },\r\n {\r\n symbol: 'E3',\r\n title: `Aquatic Acidification (N+S, ${year})`,\r\n color: '#ffaabb',\r\n variable: 'totalns',\r\n ex: 'aa'\r\n },\r\n {\r\n symbol: 'E4',\r\n title: `Empirical Forest Min (N, ${year})`,\r\n color: '#7ccfb7',\r\n variable: 'totaln',\r\n ex: 'formin'\r\n },\r\n {\r\n symbol: 'E5',\r\n title: `Empirical Forest Mid (N, ${year})`,\r\n color: '#44bb99',\r\n variable: 'totaln',\r\n ex: 'formid'\r\n },\r\n {\r\n symbol: 'E6',\r\n title: `Empirical Herb/Shrub Min (N, ${year})`,\r\n color: '#b7e7fe',\r\n variable: 'totaln',\r\n ex: 'hpsmin'\r\n },\r\n {\r\n symbol: 'E7',\r\n title: `Empirical Herb/Shrub Mid (N, ${year})`,\r\n color: '#99ddff',\r\n variable: 'totaln',\r\n ex: 'hpsmid'\r\n },\r\n {\r\n symbol: 'E8',\r\n title: `Empirical Mycorrhizae Min (N, ${year})`,\r\n color: '#cfdb70',\r\n variable: 'totaln',\r\n ex: 'mfmin'\r\n }, \r\n {\r\n symbol: 'E9',\r\n title: `Empirical Mycorrhizae Mid (N, ${year})`,\r\n color: '#bbcc33',\r\n variable: 'totaln',\r\n ex: 'mfmid'\r\n },\r\n {\r\n symbol: 'E10',\r\n title: `Herb. Spp. Richness - Open Canopy (plot) (N, ${year})`,\r\n color: '#f3ab93',\r\n variable: 'totaln',\r\n ex: 'hsrptoc'\r\n },\r\n {\r\n symbol: 'E11',\r\n title: `Herb. Spp. Richness - Closed Canopy (plot) (N, ${year})`,\r\n color: '#ee8866',\r\n variable: 'totaln',\r\n ex: 'hsrptcc'\r\n },\r\n {\r\n symbol: 'E12',\r\n title: `Herb. Spp. Richness - Open Canopy (Ecoregion) (N, ${year})`,\r\n color: '#9fc3e7',\r\n variable: 'totaln',\r\n ex: 'hsreroc'\r\n },\r\n {\r\n symbol: 'E13',\r\n title: `Herb. Spp. Richness - Closed Canopy (Ecoregion) (N, ${year})`,\r\n color: '#77aadd',\r\n variable: 'totaln',\r\n ex: 'hsrercc'\r\n }\r\n ];\r\n\r\n const chart = {\r\n chartShort: 'Contemporary',\r\n chartShortSub: 'CL Exceedance Trends (1985-2018)',\r\n chartLong: 'Long-Term',\r\n chartLongSub: 'CL Exceedance Trends (1850-2100)'\r\n };\r\n\r\n const left = 0;\r\n // Set top margin of current section\r\n let top = 0;\r\n\r\n const symbol = {\r\n color: '#FFF',\r\n colorAlt: '#555555',\r\n size: 13\r\n };\r\n\r\n const title = {\r\n color: '#555555',\r\n size: 12\r\n };\r\n\r\n const header = {\r\n color: '#dddddd',\r\n size: 10,\r\n left: left + 360,\r\n top: top + 25\r\n };\r\n\r\n const line = {\r\n leftStart: 220,\r\n leftEnd: 355,\r\n rightStart: 485,\r\n rightEnd: 600,\r\n top: top + 30,\r\n color: '#dddddd'\r\n };\r\n\r\n const tableNotes = {\r\n color: '#555555',\r\n size: 8\r\n };\r\n\r\n const createTopLine = color => {\r\n doc\r\n .lineWidth(2)\r\n .moveTo(left, top)\r\n .lineTo(left + 700, top)\r\n .stroke(color);\r\n };\r\n\r\n const createBlock = color => {\r\n doc.rect(left, top, 25, 20).fillAndStroke(color);\r\n };\r\n\r\n const createWideBlock = color => {\r\n doc.rect(left, top, 33, 20).fillAndStroke(color);\r\n };\r\n\r\n const createSymbol = label => {\r\n doc\r\n .fillColor(\r\n label === 'CL' || label === 'E1' ? symbol.color : symbol.colorAlt\r\n )\r\n .fontSize(symbol.size)\r\n .font('Helvetica-Bold')\r\n .text(label, left + 5, top + 5)\r\n .font('Helvetica');\r\n };\r\n\r\n const createTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 30, top + 10)\r\n .font('Helvetica');\r\n };\r\n\r\n const createWideTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 38, top + 10)\r\n .font('Helvetica');\r\n };\r\n\r\n const createLegend = img => {\r\n // doc.rect(left + 352, top + 10, 250, 11.6).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 352, top + 10, { height: 30 });\r\n };\r\n\r\n const createShortChart = img => {\r\n // doc.rect(left + 12, top + 35, 257, 145).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 12, top + 44, { width: 257 });\r\n };\r\n\r\n const createLongChart = img => {\r\n // doc.rect(left + 275, top + 35, 327, 145).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 275, top + 44, { width: 327 });\r\n };\r\n\r\n const createTable = img => {\r\n // doc.rect(left + 12, top + 38, 590, 115).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 12, top + 38, { height: 139 });\r\n };\r\n\r\n const createTableHeader = headerText => {\r\n doc\r\n .fillColor(header.color)\r\n .fontSize(header.size)\r\n .text(headerText, header.left, header.top);\r\n doc.fontSize(header.size - 4);\r\n\t\t\tdoc\r\n\t\t\t\t.text(\"-1\", header.left + 25, header.top - 5)\r\n\t\t\t\t.text(\"-1\", header.left + 45, header.top - 5)\r\n\t\t\t\t.text(\"-1\", header.left + 85, header.top - 5)\r\n\t\t\t\t.text(\"-1\", header.left + 105, header.top - 5);\r\n };\r\n\r\n const createLine = () => {\r\n doc\r\n .lineWidth(1)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftEnd, line.top)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftStart, line.top + 5)\r\n .moveTo(line.rightStart, line.top)\r\n .lineTo(line.rightEnd, line.top)\r\n .moveTo(line.rightEnd, line.top)\r\n .lineTo(line.rightEnd, line.top + 5)\r\n .stroke(line.color);\r\n };\r\n\r\n const createTableNotes = () => {\r\n doc\r\n .fillColor(tableNotes.color)\r\n .fontSize(tableNotes.size)\r\n .font('Helvetica-Bold')\r\n .text('Notes:', left + 30, top)\r\n .font('Helvetica')\r\n .moveDown(0)\r\n .text('Data presented in CL Exceedance Trends figures are calculated using all critical load exceedance values (i.e., both positive, indicating exceedance, and negative, indicating non-exceedance values).', {width: 350});\r\n };\r\n\r\n getImageURL(chartLegendMean).then(img => {\r\n const promises = [];\r\n const divTable = document.createElement('div');\r\n const tableContainer = document.getElementById('table-container');\r\n const tableContainerID = `table-container-${shortid.generate()}`;\r\n const tableID = `table-container-${shortid.generate()}`;\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n divTable.setAttribute('id', tableContainerID);\r\n tableContainer.appendChild(divTable);\r\n console.log(\"tableData:\");\r\n console.log(data);\r\n const tableData = data.cl.filter(v => {\r\n return (\r\n v.statistic === 'count' ||\r\n v.statistic === 'mean' ||\r\n v.statistic === 'std' ||\r\n v.statistic === 'min' ||\r\n v.statistic === 'percentile5' ||\r\n v.statistic === 'percentile10' ||\r\n v.statistic === 'percentile50' ||\r\n v.statistic === 'max'\r\n );\r\n });\r\n\r\n\r\n // SECTION TO CREATE THE TABLE\r\n ReactDOM.render(, divTable);\r\n promises.push(getTableImage(tableID));\r\n \r\n // SECTION TO CREATE THE CHARTS\r\n cl.forEach((criticalLoad, i) => {\r\n if (i > 1) {\r\n const chartData = data.exCharts[i - 2];\r\n if (typeof(chartData) !== \"undefined\") {\r\n const divShort = document.createElement('div');\r\n const divLong = document.createElement('div');\r\n const chartContainer = document.getElementById('highchart-container');\r\n const shortID = `highchart-short-${i}`;\r\n const longID = `highchart-long-${i}`;\r\n divShort.setAttribute('id', shortID);\r\n divLong.setAttribute('id', longID);\r\n chartContainer.appendChild(divShort);\r\n chartContainer.appendChild(divLong);\r\n \r\n const highchartShort = createHighchartShort(\r\n shortID,\r\n chartData,\r\n criticalLoad.variable !== 'totalns',\r\n exceedanceYear,\r\n 1985,\r\n chart.chartShort,\r\n chart.chartShortSub,\r\n 'trends'\r\n );\r\n const highchartLong = createHighchartLong(\r\n longID,\r\n chartData,\r\n criticalLoad.variable !== 'totalns',\r\n exceedanceYear,\r\n chart.chartLong,\r\n chart.chartLongSub,\r\n 'trends'\r\n );\r\n highchartShort.setSize(800, 364);\r\n highchartLong.setSize(800, 286);\r\n const shortCanvas = document.createElement('canvas');\r\n window.canvg(shortCanvas, highchartShort.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartShort.chartWidth,\r\n sourceHeight: highchartShort.chartHeight\r\n }\r\n }));\r\n const shortSRC = shortCanvas.toDataURL('image/png');\r\n\r\n const longCanvas = document.createElement('canvas');\r\n window.canvg(longCanvas, highchartLong.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartLong.chartWidth,\r\n sourceHeight: highchartLong.chartHeight\r\n }\r\n }));\r\n console.log('creating CL Charts for ' + criticalLoad.ex);\r\n const longSRC = longCanvas.toDataURL('image/png');\r\n\r\n promises.push(getImageURL(shortSRC));\r\n promises.push(getImageURL(longSRC));\r\n }\r\n }\r\n });\r\n\r\n Promise.all(promises).then(results => {\r\n createTopLine(cl[0].color);\r\n createBlock(cl[0].color);\r\n createSymbol(cl[0].symbol);\r\n createTitle(cl[0].title);\r\n createTableHeader('eq ha yr (kg ha yr )');\r\n createLine();\r\n createTable(results[0]);\r\n\r\n //*** CLMAPPER-4\r\n //removed\r\n //top = 182;\r\n //added\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n //***\r\n\r\n createTopLine(cl[1].color);\r\n createBlock(cl[1].color);\r\n createSymbol(cl[1].symbol);\r\n createTitle(cl[1].title);\r\n\r\n top += 30;\r\n createTableNotes();\r\n\r\n top += 39;\r\n createTopLine(cl[2].color);\r\n createBlock(cl[2].color);\r\n createSymbol(cl[2].symbol);\r\n createTitle(cl[2].title);\r\n createLegend(img);\r\n createShortChart(results[1]);\r\n createLongChart(results[2]);\r\n\r\n top += 177;\r\n createTopLine(cl[3].color);\r\n createBlock(cl[3].color);\r\n createSymbol(cl[3].symbol);\r\n createTitle(cl[3].title);\r\n createLegend(img);\r\n createShortChart(results[3]);\r\n createLongChart(results[4]);\r\n\r\n top += 177;\r\n createTopLine(cl[4].color);\r\n createBlock(cl[4].color);\r\n createSymbol(cl[4].symbol);\r\n createTitle(cl[4].title);\r\n createLegend(img);\r\n createShortChart(results[5]);\r\n createLongChart(results[6]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(cl[5].color);\r\n createBlock(cl[5].color);\r\n createSymbol(cl[5].symbol);\r\n createTitle(cl[5].title);\r\n top += 10;\r\n createLegend(img);\r\n createShortChart(results[7]);\r\n createLongChart(results[8]);\r\n\r\n top += 185;\r\n createTopLine(cl[6].color);\r\n createBlock(cl[6].color);\r\n createSymbol(cl[6].symbol);\r\n createTitle(cl[6].title);\r\n top += 10;\r\n createLegend(img);\r\n createShortChart(results[9]);\r\n createLongChart(results[10]);\r\n\r\n top += 185;\r\n createTopLine(cl[7].color);\r\n createBlock(cl[7].color);\r\n createSymbol(cl[7].symbol);\r\n createTitle(cl[7].title);\r\n top += 10;\r\n createLegend(img);\r\n createShortChart(results[11]);\r\n createLongChart(results[12]);\r\n\r\n top += 185;\r\n createTopLine(cl[8].color);\r\n createBlock(cl[8].color);\r\n createSymbol(cl[8].symbol);\r\n createTitle(cl[8].title);\r\n top += 10;\r\n createLegend(img);\r\n createShortChart(results[13]);\r\n createLongChart(results[14]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(cl[9].color);\r\n createBlock(cl[9].color);\r\n createSymbol(cl[9].symbol);\r\n createTitle(cl[9].title);\r\n top += 10;\r\n createLegend(img);\r\n createShortChart(results[15]);\r\n createLongChart(results[16]);\r\n\r\n top += 185;\r\n createTopLine(cl[10].color);\r\n createWideBlock(cl[10].color);\r\n createSymbol(cl[10].symbol);\r\n createWideTitle(cl[10].title);\r\n top += 13;\r\n createLegend(img);\r\n createShortChart(results[17]);\r\n createLongChart(results[18]);\r\n\r\n top += 185;\r\n createTopLine(cl[11].color);\r\n createWideBlock(cl[11].color);\r\n createSymbol(cl[11].symbol);\r\n createWideTitle(cl[11].title);\r\n top += 13;\r\n createLegend(img);\r\n createShortChart(results[19]);\r\n createLongChart(results[20]);\r\n\r\n top += 185;\r\n createTopLine(cl[12].color);\r\n createWideBlock(cl[12].color);\r\n createSymbol(cl[12].symbol);\r\n createWideTitle(cl[12].title);\r\n top += 13;\r\n createLegend(img);\r\n createShortChart(results[21]);\r\n createLongChart(results[22]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(cl[13].color);\r\n createWideBlock(cl[13].color);\r\n createSymbol(cl[13].symbol);\r\n createWideTitle(cl[13].title);\r\n top += 13;\r\n createLegend(img);\r\n createShortChart(results[23]);\r\n createLongChart(results[24]);\r\n\r\n const chartContainer = document.getElementById('highchart-container');\r\n chartContainer.innerHTML = '';\r\n tableContainer.innerHTML = '';\r\n resolve();\r\n });\r\n });\r\n });\r\n};\r\n","import React from 'react';\r\nimport ExTable from 'js/components/table/ExTable';\r\nimport ReactDOM from 'react-dom';\r\nimport chartLegend from 'images/chartLegendEx.png';\r\nimport { createHighchartShort } from 'js/components/chart/HighchartShortTerm';\r\nimport { createHighchartLong } from 'js/components/chart/HighchartLongTerm';\r\nimport { getImageURL, getTableImage } from 'js/utils/canvas.js';\r\nimport { reportDefaults } from 'js/config/config';\r\nimport { setReportStatusText } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\n\r\nimport shortid from 'shortid';\r\n\r\nexport const createEx = (exceedanceRange, exceedanceYear, exYears, data, props, doc) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n store.dispatch(setReportStatusText('Building Exceedance Section'));\r\n\r\n // Create new page\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n const year = exceedanceRange === '1' ? '1-Year' : '3-Year Average';\r\n const ex = [\r\n {\r\n symbol: 'EE1',\r\n title: `CL Exceedance Extent (${year})`,\r\n color: '#555555'\r\n },\r\n {\r\n symbol: 'EE2',\r\n title: `Forest Acidification (N+S, ${year})`,\r\n color: '#eedd88',\r\n variable: 'totalns',\r\n ex: 'ta'\r\n },\r\n {\r\n symbol: 'EE3',\r\n title: `Aquatic Acidification (N+S, ${year})`,\r\n color: '#ffaabb',\r\n variable: 'totalns',\r\n ex: 'aa'\r\n },\r\n {\r\n symbol: 'EE4',\r\n title: `Empirical Forest Min (N, ${year})`,\r\n color: '#7ccfb7',\r\n variable: 'totaln',\r\n ex: 'formin'\r\n },\r\n {\r\n symbol: 'EE5',\r\n title: `Empirical Forest Mid (N, ${year})`,\r\n color: '#44bb99',\r\n variable: 'totaln',\r\n ex: 'formid'\r\n },\r\n {\r\n symbol: 'EE6',\r\n title: `Empirical Herb/Shrub Min (N, ${year})`,\r\n color: '#b7e7fe',\r\n variable: 'totaln',\r\n ex: 'hpsmin'\r\n },\r\n {\r\n symbol: 'EE7',\r\n title: `Empirical Herb/Shrub Mid (N, ${year})`,\r\n color: '#cfdb70',\r\n variable: 'totaln',\r\n ex: 'hpsmid'\r\n },\r\n {\r\n symbol: 'EE8',\r\n title: `Empirical Mycorrhizae Min (N, ${year})`,\r\n color: '#99ddff',\r\n variable: 'totaln',\r\n ex: 'mfmin'\r\n },\r\n {\r\n symbol: 'EE9',\r\n title: `Empirical Mycorrhizae Mid (N, ${year})`,\r\n color: '#bbcc33',\r\n variable: 'totaln',\r\n ex: 'mfmid'\r\n },\r\n {\r\n symbol: 'EE10',\r\n title: `Herb. Spp. Richness - Open Canopy (plot) (N, ${year})`,\r\n color: '#f3ab93',\r\n variable: 'totaln',\r\n ex: 'hsrptoc'\r\n },\r\n {\r\n symbol: 'EE11',\r\n title: `Herb. Spp. Richness - Closed Canopy (plot) (N, ${year})`,\r\n color: '#ee8866',\r\n variable: 'totaln',\r\n ex: 'hsrptcc'\r\n },\r\n {\r\n symbol: 'EE12',\r\n title: `Herb. Spp. Richness - Open Canopy (Ecoregion) (N, ${year})`,\r\n color: '#9fc3e7',\r\n variable: 'totaln',\r\n ex: 'hsreroc'\r\n },\r\n {\r\n symbol: 'EE13',\r\n title: `Herb. Spp. Richness - Closed Canopy (Ecoregion) (N, ${year})`,\r\n color: '#77aadd',\r\n variable: 'totaln',\r\n ex: 'hsrercc'\r\n }\r\n ];\r\n\r\n const chart = {\r\n chartShort: 'Contemporary',\r\n chartShortSub: 'CL Exceedance Extent (1985-2018)',\r\n chartLong: 'Long-Term',\r\n chartLongSub: 'CL Exceedance Extent (1850-2100)'\r\n };\r\n\r\n const left = 0;\r\n // Set top margin of current section\r\n let top = 0;\r\n\r\n const symbol = {\r\n color: '#FFF',\r\n colorAlt: '#555555',\r\n size: 13\r\n };\r\n\r\n const title = {\r\n color: '#555555',\r\n size: 12\r\n };\r\n\r\n const header = {\r\n color: '#dddddd',\r\n size: 10,\r\n left: left + 250,\r\n top: top + 35\r\n };\r\n\r\n const line = {\r\n leftStart: 95,\r\n leftEnd: 245,\r\n rightStart: exYears.includes('-') ? 390 : 365,\r\n rightEnd: 595,\r\n top: top + 40,\r\n color: '#dddddd'\r\n };\r\n\r\n const createTopLine = color => {\r\n doc\r\n .lineWidth(2)\r\n .moveTo(left, top)\r\n .lineTo(left + 700, top)\r\n .stroke(color);\r\n };\r\n\r\n const createBlock = color => {\r\n doc.rect(left, top, 33, 20).fillAndStroke(color);\r\n };\r\n\r\n const createWideBlock = color => {\r\n doc.rect(left, top, 38, 20).fillAndStroke(color);\r\n };\r\n\r\n const createSymbol = label => {\r\n doc\r\n .fillColor(\r\n label === 'EE1' ? symbol.color : symbol.colorAlt\r\n )\r\n .fontSize(symbol.size)\r\n .font('Helvetica-Bold')\r\n .text(label, left + 5, top + 5)\r\n .font('Helvetica');\r\n };\r\n const createTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 38, top + 10)\r\n .font('Helvetica');\r\n };\r\n\r\n const createWideTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 43, top + 10)\r\n .font('Helvetica');\r\n };\r\n\r\n const createLegend = img => {\r\n // doc.rect(left + 352, top + 10, 250, 11.6).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 285, top + 30, { height: 16 });\r\n };\r\n\r\n const createShortChart = img => {\r\n // doc.rect(left + 12, top + 35, 257, 145).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 12, top + 43, { width: 257 });\r\n };\r\n\r\n const createLongChart = img => {\r\n // doc.rect(left + 275, top + 35, 327, 145).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 275, top + 43, { width: 327 });\r\n };\r\n\r\n const createTable = img => {\r\n // doc.rect(left + 12, top + 50, 590, 146).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 12, top + 50, { height: 225 });\r\n };\r\n\r\n const createTableHeader = headerText => {\r\n doc\r\n .fillColor(header.color)\r\n .fontSize(header.size)\r\n .text(headerText, header.left, header.top);\r\n };\r\n\r\n const createLine = () => {\r\n doc\r\n .lineWidth(1)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftEnd, line.top)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftStart, line.top + 5)\r\n .moveTo(line.rightStart, line.top)\r\n .lineTo(line.rightEnd, line.top)\r\n .moveTo(line.rightEnd, line.top)\r\n .lineTo(line.rightEnd, line.top + 5)\r\n .stroke(line.color);\r\n };\r\n\r\n getImageURL(chartLegend).then(img => {\r\n const promises = [];\r\n const divTable1 = document.createElement('div');\r\n const tableContainer1 = document.getElementById('table-container');\r\n const tableContainerID1 = `table-container-${shortid.generate()}`;\r\n const tableID1 = `table-container-${shortid.generate()}`;\r\n divTable1.setAttribute('id', tableContainerID1);\r\n divTable1.setAttribute(\"style\", \"width:2000px;\");\r\n tableContainer1.appendChild(divTable1);\r\n const tableData = Object.assign({}, data);\r\n\r\n // SECTION TO CREATE TABLE PART 1\r\n ReactDOM.render(, divTable1);\r\n promises.push(getTableImage(tableID1));\r\n\r\n const divTable2 = document.createElement('div');\r\n const tableContainer2 = document.getElementById('table-container');\r\n const tableContainerID2 = `table-container-${shortid.generate()}`;\r\n const tableID2 = `table-container-${shortid.generate()}`;\r\n divTable2.setAttribute('id', tableContainerID2);\r\n divTable2.setAttribute(\"style\", \"width:2000px;\");\r\n tableContainer2.appendChild(divTable2);\r\n\r\n // SECTION TO CREATE TABLE PART 2\r\n ReactDOM.render(, divTable2);\r\n promises.push(getTableImage(tableID2));\r\n\r\n // SECTION TO CREATE THE CHARTS\r\n ex.forEach((exceedance, i) => {\r\n if (i > 0) {\r\n const divShort = document.createElement('div');\r\n const divLong = document.createElement('div');\r\n const chartContainer = document.getElementById('highchart-container');\r\n const shortID = `highchart-short-${i}`;\r\n const longID = `highchart-long-${i}`;\r\n divShort.setAttribute('id', shortID);\r\n divLong.setAttribute('id', longID);\r\n chartContainer.appendChild(divShort);\r\n chartContainer.appendChild(divLong);\r\n const chartData = data.exCharts[i - 1];\r\n const highchartShort = createHighchartShort(\r\n shortID,\r\n chartData,\r\n false,\r\n exceedanceYear,\r\n 1985,\r\n chart.chartShort,\r\n chart.chartShortSub,\r\n 'extent'\r\n );\r\n const highchartLong = createHighchartLong(\r\n longID,\r\n chartData,\r\n false,\r\n exceedanceYear,\r\n chart.chartLong,\r\n chart.chartLongSub,\r\n 'extent'\r\n );\r\n highchartShort.setSize(800, 364);\r\n highchartLong.setSize(800, 286);\r\n const shortCanvas = document.createElement('canvas');\r\n window.canvg(shortCanvas, highchartShort.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartShort.chartWidth,\r\n sourceHeight: highchartShort.chartHeight\r\n }\r\n }));\r\n const shortSRC = shortCanvas.toDataURL('image/png');\r\n\r\n const longCanvas = document.createElement('canvas');\r\n window.canvg(longCanvas, highchartLong.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartLong.chartWidth,\r\n sourceHeight: highchartLong.chartHeight\r\n }\r\n }));\r\n const longSRC = longCanvas.toDataURL('image/png');\r\n promises.push(getImageURL(shortSRC));\r\n promises.push(getImageURL(longSRC));\r\n }\r\n });\r\n\r\n Promise.all(promises).then(results => {\r\n createTopLine(ex[0].color);\r\n createBlock(ex[0].color);\r\n createSymbol(ex[0].symbol);\r\n createTitle(ex[0].title);\r\n createTable(results[0]);\r\n createTableHeader(`${exYears} Exceedance Extent`);\r\n\r\n top = 230;\r\n createTable(results[1]);\r\n createLine();\r\n\r\n top += 310;\r\n createTopLine(ex[1].color);\r\n createBlock(ex[1].color);\r\n createSymbol(ex[1].symbol);\r\n createTitle(ex[1].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[2]);\r\n createLongChart(results[3]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(ex[2].color);\r\n createBlock(ex[2].color);\r\n createSymbol(ex[2].symbol);\r\n createTitle(ex[2].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[4]);\r\n createLongChart(results[5]);\r\n\r\n top += 185;\r\n createTopLine(ex[3].color);\r\n createBlock(ex[3].color);\r\n createSymbol(ex[3].symbol);\r\n createTitle(ex[3].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[6]);\r\n createLongChart(results[7]);\r\n\r\n top += 185;\r\n createTopLine(ex[4].color);\r\n createBlock(ex[4].color);\r\n createSymbol(ex[4].symbol);\r\n createTitle(ex[4].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[8]);\r\n createLongChart(results[9]);\r\n\r\n top += 185;\r\n createTopLine(ex[5].color);\r\n createBlock(ex[5].color);\r\n createSymbol(ex[5].symbol);\r\n createTitle(ex[5].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[10]);\r\n createLongChart(results[11]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(ex[6].color);\r\n createBlock(ex[6].color);\r\n createSymbol(ex[6].symbol);\r\n createTitle(ex[6].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[12]);\r\n createLongChart(results[13]);\r\n\r\n top += 185;\r\n createTopLine(ex[7].color);\r\n createBlock(ex[7].color);\r\n createSymbol(ex[7].symbol);\r\n createTitle(ex[7].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[14]);\r\n createLongChart(results[15]);\r\n\r\n top += 185;\r\n createTopLine(ex[8].color);\r\n createBlock(ex[8].color);\r\n createSymbol(ex[8].symbol);\r\n createTitle(ex[8].title);\r\n top += 5;\r\n createLegend(img);\r\n createShortChart(results[16]);\r\n createLongChart(results[17]);\r\n\r\n top += 185;\r\n createTopLine(ex[9].color);\r\n createWideBlock(ex[9].color);\r\n createSymbol(ex[9].symbol);\r\n createWideTitle(ex[9].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[18]);\r\n createLongChart(results[19]);\r\n\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(ex[10].color);\r\n createWideBlock(ex[10].color);\r\n createSymbol(ex[10].symbol);\r\n createWideTitle(ex[10].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[20]);\r\n createLongChart(results[21]);\r\n\r\n top += 185;\r\n createTopLine(ex[11].color);\r\n createWideBlock(ex[11].color);\r\n createSymbol(ex[11].symbol);\r\n createWideTitle(ex[11].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[22]);\r\n createLongChart(results[23]);\r\n\r\n top += 185;\r\n createTopLine(ex[12].color);\r\n createWideBlock(ex[12].color);\r\n createSymbol(ex[12].symbol);\r\n createWideTitle(ex[12].title);\r\n top += 5;\r\n createLegend(img);\r\n top += 5;\r\n createShortChart(results[24]);\r\n createLongChart(results[25]);\r\n\r\n const chartContainer = document.getElementById('highchart-container');\r\n chartContainer.innerHTML = '';\r\n tableContainer1.innerHTML = '';\r\n tableContainer2.innerHTML = '';\r\n resolve();\r\n });\r\n // });\r\n });\r\n });\r\n};\r\n","export default \"data:image/png;base64,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\"","import PDFDocument from '@react-pdf/pdfkit';\r\nimport blobStream from 'blob-stream';\r\nimport Filesaver from 'file-saver';\r\nimport { createCover } from 'js/components/pdf/Cover';\r\nimport { createContents } from 'js/components/pdf/Contents';\r\nimport { createDeposition } from 'js/components/pdf/DepositionReport';\r\nimport { createCL } from 'js/components/pdf/CLReport';\r\nimport { createEx } from 'js/components/pdf/ExReport';\r\nimport { createExSev } from 'js/components/pdf/ExSevReport';\r\nimport { createDisclaimer } from 'js/components/pdf/Disclaimer';\r\nimport { toggleReportSpinner } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\n\r\n\r\nexport const createPDF = (state, props, data) => {\r\n // create a document and pipe to a blob\r\n const doc = new PDFDocument({bufferPages: true});\r\n\r\n const stream = doc.pipe(blobStream());\r\n const {\r\n reportRange,\r\n reportYear\r\n } = state;\r\n const depYears = reportRange === '3' ? `${reportYear - 1}-${reportYear + 1}` : reportYear.toString();\r\n const exYears = reportRange === '3' ? `${reportYear - 1}-${reportYear + 1}` : reportYear.toString();\r\n // Set Timers to test for different run times of creating report\r\n console.log('creating pdf');\r\n console.time('Report took: ');\r\n console.time('Cover took: ');\r\n createCover(depYears, exYears, props, doc)\r\n .then(() => {\r\n console.timeEnd('Contents took: ');\r\n console.time('Disclaimer took: ');\r\n return createDisclaimer(props, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Cover took: ');\r\n console.time('Contents took: ');\r\n return createContents(reportRange, reportRange, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Disclaimer took: ');\r\n console.time('Deposition took: ');\r\n return createDeposition(reportRange, depYears, reportYear, props, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Deposition took: ');\r\n console.time('Critical Loads took: ');\r\n return createCL(reportRange, reportYear, data, props, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Critical Loads took: ');\r\n console.time('Exceedance Extent took: ');\r\n return createEx(reportRange, reportYear, exYears, data, props, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Exceedance Extent took: ');\r\n console.time('Exceedance Severity took: ');\r\n return createExSev(reportRange, reportYear, exYears, data, doc);\r\n })\r\n .then(() => {\r\n console.timeEnd('Exceedance Severity took: ');\r\n const range = doc.bufferedPageRange();\r\n\r\n for (let i = 3; i <= range.count - 1; i++) {\r\n doc.switchToPage(i)\r\n doc\r\n .fillColor('555555')\r\n .fontSize(6)\r\n .text(`${i + 1}`, 0, 770, {align: 'right'});\r\n }\r\n\r\n store.dispatch(toggleReportSpinner());\r\n doc.end();\r\n });\r\n\r\n stream.on('finish', () => {\r\n const blob = stream.toBlob('application/pdf');\r\n Filesaver.saveAs(blob, 'CL_Mapper_Report.pdf');\r\n });\r\n};\r\n","export const createDisclaimer = (props, doc) => {\r\n return new Promise((resolve, reject) => {\r\n // Create new page\r\n doc.addPage();\r\n\r\n // Left margin for elements\r\n const left = 30;\r\n // Set top margin of current section\r\n let top = 30;\r\n\r\n const disclaimer = {\r\n color: '555555',\r\n size: 10,\r\n top: 30,\r\n font: 'Helvetica'\r\n };\r\n\r\n const date = new Date();\r\n const datestring = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();\r\n\r\n const introText = 'For more information about the contents of this Report, see the “Report Description” which is downloaded separately from the CL Mapper. The Report Description gives detailed information on the sources of data used, and how they were processed for display and calculations for all tables and graphs in the Report.';\r\n\r\n const disclaimerText = 'This publication was developed in partnership by the US Environmental Protection Agency (USEPA), the USDA Forest Service (USFS), and the National Park Service (NPS), under Interagency Agreement (RW-012-92460901-0, 16-IA-11132422-XXX), and under contracts funded by USEPA (EP-W-11-029/WA 4-17, EP-W-13-010/WA 4-08) and USFS (P17PX02812). The information contained in this report was compiled from peer reviewed sources that are described in more detail in the Report Description. No warranty expressed or implied is made regarding the accuracy or utility of the data or information presented on any other system or for general or scientific purposes, nor shall the act of distribution constitute any such warranty or a reflection of EPA policy.';\r\n\r\n const citationNotes = `CL Mapper Tool. US Environmental Protection Agency, USDA Forest Service, and National Park Service, Washington, DC. CL Mapper ver. 2.2. https://clmapper.epa.gov/. Downloaded on ${datestring}.`;\r\n\r\n const createText = (text) => {\r\n doc\r\n .font('Helvetica')\r\n .text(text, left, top, { width: 560 });\r\n };\r\n\r\n const createTitle = (text) => {\r\n doc\r\n .font('Helvetica-Bold')\r\n .text(text, left, top, { width: 560 })\r\n };\r\n\r\n doc\r\n .fontSize(disclaimer.size)\r\n .fillColor(disclaimer.color)\r\n .font(disclaimer.font);\r\n\r\n createText(introText);\r\n\r\n top += 50;\r\n createTitle('Disclaimer:');\r\n top += 15;\r\n createText(disclaimerText);\r\n\r\n top += 100;\r\n createTitle('Preferred Citation:');\r\n top += 15;\r\n createText(citationNotes);\r\n\r\n resolve();\r\n });\r\n};\r\n","export const createContents = (depositionRange, exceedanceRange, doc) => {\r\n return new Promise((resolve, reject) => {\r\n // Create new page\r\n doc.addPage();\r\n\r\n // Left margin for elements\r\n const left = 80;\r\n // Set top margin of current section\r\n let top = 80;\r\n\r\n const contents = {\r\n color: '#aaaaaa',\r\n size: 30,\r\n top: 30\r\n };\r\n\r\n const page = {\r\n color: '#777777',\r\n size: 9,\r\n right: 450\r\n };\r\n\r\n const title = {\r\n color: '#555555',\r\n size: 12,\r\n left: 150\r\n };\r\n\r\n const subTitle = {\r\n color: '#777777',\r\n size: 9,\r\n left: 150\r\n };\r\n\r\n const line = {\r\n left: 130,\r\n right: 500,\r\n color: '#eeeeee'\r\n };\r\n\r\n const block = {\r\n color: '#555555'\r\n };\r\n\r\n const symbol = {\r\n color: '#FFF',\r\n size: 15\r\n };\r\n\r\n if (depositionRange === '1'){\r\n depositionRange = `${depositionRange}-Year`;\r\n } else {\r\n depositionRange = `${depositionRange}-Year Average`;\r\n }\r\n\r\n if (exceedanceRange === '1'){\r\n exceedanceRange = `${exceedanceRange}-Year`;\r\n } else {\r\n exceedanceRange = `${exceedanceRange}-Year Average`;\r\n }\r\n const subMenu = {\r\n deposition: [\r\n `D1 - Nitrogen (N), Deposition (${depositionRange})`,\r\n `D2 - Sulfur (S), Deposition (${depositionRange})`,\r\n `D3 - Nitrogen and Sulfur (N+S), Deposition (${depositionRange})`\r\n ],\r\n criticalLoads: [\r\n 'CL - Critical Loads (CLs)'\r\n ],\r\n clExceedance: [\r\n `E2 - Forest Acidification (N+S, ${exceedanceRange})`,\r\n `E3 - Aquatic Acidification (N+S, ${exceedanceRange})`,\r\n `E4 - Empirical Forest Min (N, ${exceedanceRange})`,\r\n `E5 - Empirical Forest Mid (N, ${exceedanceRange}`,\r\n `E6 - Empirical Herb/Shrub Min (N, ${exceedanceRange})`,\r\n `E7 - Empirical Herb/Shrub Mid (N, ${exceedanceRange})`,\r\n `E8 - Empirical Mycorrhizae Min (N, ${exceedanceRange})`,\r\n `E9 - Empirical Mycorrhizae Mid (N, ${exceedanceRange})`,\r\n `E10 - Herb. Spp. Richness - Open Canopy (plot) (N, ${exceedanceRange})`,\r\n `E11 - Herb. Spp. Richness - Closed Canopy (plot) (N, ${exceedanceRange})`,\r\n `E12 - Herb. Spp. Richness - Open Canopy (Ecoregion) (N, ${exceedanceRange})`,\r\n `E13 - Herb. Spp. Richness - Closed Canopy (Ecoregion) (N, ${exceedanceRange})`\r\n ],\r\n clExceedanceExtent: [\r\n `EE2 - Forest Acidification (N+S, ${exceedanceRange})`,\r\n `EE3 - Aquatic Acidification (N+S, ${exceedanceRange})`,\r\n `EE4 - Empirical Forest Min (N, ${exceedanceRange})`,\r\n `EE5 - Empirical Forest Mid (N, ${exceedanceRange}`,\r\n `EE6 - Empirical Herb/Shrub Min (N, ${exceedanceRange})`,\r\n `EE7 - Empirical Herb/Shrub Mid (N, ${exceedanceRange})`,\r\n `EE8 - Empirical Mycorrhizae Min (N, ${exceedanceRange})`,\r\n `EE9 - Empirical Mycorrhizae Mid (N, ${exceedanceRange})`,\r\n `EE10 - Herb. Spp. Richness - Open Canopy (plot) (N, ${exceedanceRange})`,\r\n `EE11 - Herb. Spp. Richness - Closed Canopy (plot) (N, ${exceedanceRange})`,\r\n `EE12 - Herb. Spp. Richness - Open Canopy (Ecoregion) (N, ${exceedanceRange})`,\r\n `EE13 - Herb. Spp. Richness - Closed Canopy (Ecoregion) (N, ${exceedanceRange})`\r\n ]\r\n };\r\n\r\n const createTopLine = () => {\r\n doc\r\n .lineWidth(1)\r\n .moveTo(line.left, top)\r\n .lineTo(line.right, top)\r\n .stroke(line.color);\r\n };\r\n\r\n const createBlock = () => {\r\n doc.rect(left, top, 30, 35).fillAndStroke(block.color);\r\n };\r\n\r\n const createSymbol = label => {\r\n if (label.length > 1) {\r\n doc\r\n .fillColor(symbol.color)\r\n .fontSize(symbol.size - 3)\r\n .text(label, left + 7, top + 13);\r\n } else {\r\n doc\r\n .fillColor(symbol.color)\r\n .fontSize(symbol.size)\r\n .text(label, left + 10, top + 12);\r\n }\r\n };\r\n\r\n const createTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .text(titleText, title.left, top + 10);\r\n };\r\n\r\n const createPage = (pageStart, pageEnd) => {\r\n if (pageEnd) {\r\n doc\r\n .fillColor(page.color)\r\n .fontSize(page.size)\r\n .text(`Pages ${pageStart}-${pageEnd}`, page.right, top + 7);\r\n } else {\r\n doc\r\n .fillColor(page.color)\r\n .fontSize(page.size)\r\n .text(`Page ${pageStart}`, page.right, top + 7);\r\n }\r\n };\r\n\r\n const createSubTitle = (names, startPoint) => {\r\n names.forEach((name, index) => {\r\n doc\r\n .fillColor(subTitle.color)\r\n .fontSize(subTitle.size)\r\n .text(name, title.left, startPoint + (index + 1) * 16, {\r\n width: 700,\r\n columns: 2\r\n });\r\n });\r\n };\r\n\r\n // Make the Contents font\r\n doc\r\n .fontSize(contents.size)\r\n .fillColor(contents.color)\r\n .text('Contents', left, contents.top);\r\n\r\n // ======================== SECTION FOR DEPOSITION ========================\r\n // Create the top line\r\n createTopLine();\r\n // Create the rectangle block\r\n createBlock();\r\n // Create the symbol\r\n createSymbol('D');\r\n // Create the title\r\n createTitle('Deposition');\r\n // Create the page number\r\n createPage(4);\r\n // Create sub menus\r\n createSubTitle(subMenu.deposition, top + 15);\r\n\r\n // ======================== SECTION FOR CRITICAL LOADS ========================\r\n top = 165;\r\n // Create the top line\r\n createTopLine();\r\n // Create the rectangle block\r\n createBlock();\r\n // Create the symbol\r\n createSymbol('CL');\r\n // Create the title\r\n createTitle('Critical Load');\r\n // Create the page number\r\n createPage(5);\r\n // Create sub menus\r\n createSubTitle(subMenu.criticalLoads, top + 15);\r\n\r\n // ======================== SECTION FOR CL EXCEEDANCE ========================\r\n top = 220;\r\n // Create the top line\r\n createTopLine();\r\n // Create the rectangle block\r\n createBlock();\r\n // Create the symbol\r\n createSymbol('E');\r\n // Create the title\r\n createTitle(`E1 - CL Exceedance Trends (${exceedanceRange})`);\r\n // Create the page number\r\n createPage(6, 9);\r\n // Create sub menus\r\n createSubTitle(subMenu.clExceedance, top + 15);\r\n\r\n // ======================== SECTION FOR CL EXCEEDANCE EXTENT ========================\r\n top = 450;\r\n // Create the top line\r\n createTopLine();\r\n // Create the rectangle block\r\n createBlock();\r\n // Create the symbol\r\n createSymbol('EE');\r\n // Create the title\r\n createTitle(`EE1 - CL Exceedance Extent (${exceedanceRange})`);\r\n // Create the page number\r\n createPage(10, 13);\r\n // Create sub menus\r\n createSubTitle(subMenu.clExceedanceExtent, top + 15);\r\n\r\n // ======================== SECTION FOR CL EXCEEDANCE SEVERITY ========================\r\n \r\n top = 680;\r\n // Create the top line\r\n createTopLine();\r\n // Create the rectangle block\r\n createBlock();\r\n // Create the symbol\r\n createSymbol('ES');\r\n // Create the title\r\n createTitle(`ES1 - CL Exceedance Severity (${exceedanceRange})`);\r\n // Create the page number\r\n createPage(14, 15);\r\n\r\n resolve();\r\n });\r\n};\r\n","import React from 'react';\r\nimport DepTable from 'js/components/table/DepTable';\r\nimport ReactDOM from 'react-dom';\r\nimport chartLegendMean from 'images/chartLegendMean.png';\r\nimport { createHighchartShort } from 'js/components/chart/HighchartShortTerm';\r\nimport { createHighchartLong } from 'js/components/chart/HighchartLongTerm';\r\nimport { getImageURL, getTableImage } from 'js/utils/canvas.js';\r\nimport { reportURLs, reportDefaults } from 'js/config/config';\r\nimport { getDepositionData } from 'js/utils/helper';\r\nimport { setReportStatusText } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\n\r\nexport const createDeposition = (\r\n depositionRange,\r\n depYears,\r\n depositionYear,\r\n props,\r\n doc\r\n) => {\r\n return new Promise((resolve, reject) => {\r\n store.dispatch(setReportStatusText('Building Deposition Loads Section'));\r\n // Create new page\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n const year = depositionRange === '1' ? '1-Year' : '3-Year Average';\r\n const dep = [\r\n {\r\n symbol: 'D1',\r\n title: `Nitrogen (N) Deposition (${year})`,\r\n header: `${depYears} Deposition, eq ha yr (kg ha yr )`,\r\n chartShort: `N CONTEMPORARY DEPOSITION TRENDS (${year}) (1985-2018)`,\r\n chartLong: `N LONG-TERM DEPOSITION TRENDS (${year}) (1850-2100)`,\r\n variable: 'totaln'\r\n },\r\n {\r\n symbol: 'D2',\r\n title: `Sulfur (S) Deposition (${year})`,\r\n header: `${depYears} Deposition, eq ha yr (kg ha yr )`,\r\n chartShort: `S CONTEMPORARY DEPOSITION TRENDS (${year}) (1985-2018)`,\r\n chartLong: `S LONG-TERM DEPOSITION TRENDS (${year}) (1850-2100)`,\r\n variable: 'totals'\r\n },\r\n {\r\n symbol: 'D3',\r\n title: `Nitrogen+Sulfur (N+S) Total Deposition (${year})`,\r\n header: `${depYears} Deposition, eq ha yr `,\r\n chartShort: `N+S CONTEMPORARY DEPOSITION TRENDS (${year}) (1985-2018)`,\r\n chartLong: `N+S LONG-TERM DEPOSITION TRENDS (${year}) (1850-2100)`,\r\n variable: 'totalns'\r\n }\r\n ];\r\n\r\n // Left margin for elements\r\n const left = 0;\r\n // Set top margin of current section\r\n let top = 0;\r\n\r\n const title = {\r\n color: '#555555',\r\n size: 12\r\n };\r\n\r\n const block = {\r\n color: '#555555'\r\n };\r\n\r\n const symbol = {\r\n color: '#FFF',\r\n size: 13\r\n };\r\n\r\n const header = {\r\n color: '#dddddd',\r\n size: 10\r\n };\r\n\r\n const lineDefault = {\r\n leftStart: 155,\r\n leftEnd: depYears.includes('-') ? 250 : 283,\r\n rightStart: depYears.includes('-') ? 480 : 488,\r\n rightEnd: 602,\r\n color: '#dddddd'\r\n };\r\n\r\n const lineD3 = {\r\n leftStart: 155,\r\n leftEnd: 285,\r\n rightStart: depYears.includes('-') ? 450 : 425,\r\n rightEnd: 602,\r\n color: '#dddddd'\r\n };\r\n\r\n const createBlock = () => {\r\n doc.rect(left, top, 25, 20).fillAndStroke(block.color);\r\n };\r\n\r\n const createTopLine = () => {\r\n doc\r\n .lineWidth(2)\r\n .moveTo(left, top)\r\n .lineTo(left + 700, top)\r\n .stroke(block.color);\r\n };\r\n\r\n const createSymbol = label => {\r\n doc\r\n .fillColor(symbol.color)\r\n .fontSize(symbol.size)\r\n .font('Helvetica-Bold')\r\n .text(label, left + 3, top + 5)\r\n .font('Helvetica');\r\n };\r\n\r\n const createTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 28, top + 6)\r\n .font('Helvetica');\r\n };\r\n\r\n const createLegend = img => {\r\n // doc.rect(left + 352, top + 5, 250, 11.6).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 352, top + 5, { height: 30 });\r\n };\r\n\r\n const createShortChart = img => {\r\n // doc.rect(left + 12, top + 21, 257, 117).fillAndStroke('#BFBFBF');\r\n doc.image(img, left + 12, top + 40, { width: 257 });\r\n };\r\n\r\n const createLongChart = img => {\r\n // doc.rect(left + 275, top + 21, 327, 117).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 275, top + 40, { width: 327 });\r\n };\r\n\r\n const createTableHeader = headerText => {\r\n doc\r\n .fillColor(header.color)\r\n .fontSize(header.size);\r\n\r\n if (headerText.indexOf('kg') > -1) {\r\n doc\r\n .text(headerText, left + depYears.includes('-') ? 255 : 290, top + 150);\r\n doc\r\n .fontSize(header.size - 4);\r\n doc\r\n .text('-1', left + depYears.includes('-') ? 385 : 393, top + 147)\r\n .text('-1', left + depYears.includes('-') ? 404 : 413, top + 147)\r\n .text('-1', left + depYears.includes('-') ? 442 : 452, top + 147)\r\n .text('-1', left + depYears.includes('-') ? 462 : 472, top + 147);\r\n } else {\r\n doc\r\n .text(headerText, left + 290, top + 150);\r\n doc.fontSize(header.size - 4);\r\n\t\t\t\tdoc\r\n\t\t\t\t\t.text(\"-1\", left + depYears.includes(\"-\") ? 419 : 393, top + 147)\r\n\t\t\t\t\t.text(\"-1\", left + depYears.includes(\"-\") ? 439 : 413, top + 147);\r\n }\r\n\r\n };\r\n\r\n const createLine = (headerText) => {\r\n const line = headerText.indexOf('kg') > -1 ? lineDefault : lineD3;\r\n\r\n doc\r\n .lineWidth(1)\r\n .moveTo(line.leftStart, top + 153)\r\n .lineTo(line.leftEnd, top + 153)\r\n .moveTo(line.leftStart, top + 153)\r\n .lineTo(line.leftStart, top + 158)\r\n .moveTo(line.rightStart, top + 153)\r\n .lineTo(line.rightEnd, top + 153)\r\n .moveTo(line.rightEnd, top + 153)\r\n .lineTo(line.rightEnd, top + 158)\r\n .stroke(line.color);\r\n };\r\n\r\n const createTable = img => {\r\n doc.image(img, left + 13, top + 160, { height: 87 });\r\n // doc.rect(left + 13, top + 160, 590, 100).fillAndStroke('#AFAFAF');\r\n };\r\n\r\n getImageURL(chartLegendMean)\r\n .then(img => {\r\n const chartDataPromises = dep.map(deposition => getDepositionData(reportURLs.dep, props.title, props.classification, deposition.variable, depositionYear, depositionRange));\r\n const promises = [];\r\n\r\n Promise.all(chartDataPromises)\r\n .then(data => {\r\n dep.forEach((deposition, i) => {\r\n const divShort = document.createElement('div');\r\n const divLong = document.createElement('div');\r\n const divTable = document.createElement('div');\r\n const chartContainer = document.getElementById('highchart-container');\r\n const tableContainer = document.getElementById('table-container');\r\n const shortID = `highchart-short-${i}`;\r\n const longID = `highchart-long-${i}`;\r\n const tableContainerID = `table-container-${i}`;\r\n const tableID = `table-container-${i}`;\r\n divShort.setAttribute('id', shortID);\r\n divLong.setAttribute('id', longID);\r\n divTable.setAttribute('id', tableContainerID);\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n chartContainer.appendChild(divShort);\r\n chartContainer.appendChild(divLong);\r\n tableContainer.appendChild(divTable);\r\n\r\n const chartData = data[i].chartData;\r\n const tableData = data[i].tableData;\r\n\r\n const highchartShort = createHighchartShort(\r\n shortID,\r\n chartData,\r\n deposition.variable !== 'totalns',\r\n depositionYear,\r\n 1985,\r\n deposition.chartShort,\r\n null,\r\n 'trends'\r\n );\r\n const highchartLong = createHighchartLong(\r\n longID,\r\n chartData,\r\n deposition.variable !== 'totalns',\r\n depositionYear,\r\n deposition.chartLong,\r\n null,\r\n 'trends'\r\n );\r\n // SECTION TO CREATE THE TABLE\r\n ReactDOM.render(\r\n ,\r\n divTable\r\n );\r\n\r\n highchartShort.setSize(900, 364);\r\n highchartLong.setSize(900, 286);\r\n const shortCanvas = document.createElement('canvas');\r\n window.canvg(shortCanvas, highchartShort.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartShort.chartWidth,\r\n sourceHeight: highchartShort.chartHeight\r\n }\r\n }));\r\n const shortSRC = shortCanvas.toDataURL('image/png');\r\n\r\n const longCanvas = document.createElement('canvas');\r\n window.canvg(longCanvas, highchartLong.getSVG({\r\n exporting: {\r\n allowHTML: true,\r\n sourceWidth: highchartLong.chartWidth,\r\n sourceHeight: highchartLong.chartHeight\r\n }\r\n }));\r\n const longSRC = longCanvas.toDataURL('image/png');\r\n promises.push(getImageURL(shortSRC));\r\n promises.push(getImageURL(longSRC));\r\n promises.push(getTableImage(tableID));\r\n });\r\n\r\n Promise.all(promises).then(results => {\r\n createBlock();\r\n createSymbol(dep[0].symbol);\r\n createTitle(dep[0].title);\r\n createLegend(img);\r\n createShortChart(results[0]);\r\n createLongChart(results[1]);\r\n createTableHeader(dep[0].header);\r\n createLine(dep[0].header);\r\n createTable(results[2]);\r\n\r\n top = 258;\r\n createTopLine();\r\n createBlock();\r\n createSymbol(dep[1].symbol);\r\n createTitle(dep[1].title);\r\n createLegend(img);\r\n createShortChart(results[3]);\r\n createLongChart(results[4]);\r\n createTableHeader(dep[1].header);\r\n createLine(dep[1].header);\r\n createTable(results[5]);\r\n\r\n top = 520;\r\n createTopLine();\r\n createBlock();\r\n createSymbol(dep[2].symbol);\r\n createTitle(dep[2].title);\r\n createLegend(img);\r\n createShortChart(results[6]);\r\n createLongChart(results[7]);\r\n createTableHeader(dep[2].header);\r\n createLine(dep[2].header);\r\n createTable(results[8]);\r\n\r\n const chartContainer = document.getElementById('highchart-container');\r\n chartContainer.innerHTML = '';\r\n const tableContainer = document.getElementById('table-container');\r\n tableContainer.innerHTML = '';\r\n resolve();\r\n });\r\n });\r\n });\r\n });\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { getTableImage } from 'js/utils/canvas.js';\r\nimport shortid from 'shortid';\r\nimport ExSevTable from 'js/components/table/ExSevTable';\r\nimport { reportDefaults } from 'js/config/config';\r\nimport { setReportStatusText } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\n\r\nexport const createExSev = (\r\n exceedanceRange,\r\n exceedanceYear,\r\n exYears,\r\n data,\r\n doc\r\n) => {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n store.dispatch(setReportStatusText('Building Exceedance Extent Section'));\r\n\r\n // Create new page\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n const year = exceedanceRange === '1' ? '1-Year' : '3-Year Average';\r\n const ex = {\r\n symbol: 'ES1',\r\n title: `CL Exceedance Severity (${year})`,\r\n color: '#555555'\r\n };\r\n\r\n const left = 0;\r\n // Set top margin of current section\r\n let top = 0;\r\n\r\n const symbol = {\r\n color: '#FFF',\r\n size: 13\r\n };\r\n\r\n const title = {\r\n color: '#555555',\r\n size: 12\r\n };\r\n\r\n const header = {\r\n color: '#dddddd',\r\n size: 10,\r\n left: left + 275,\r\n top: top + 30\r\n };\r\n\r\n const line = {\r\n leftStart: 120,\r\n leftEnd: 270,\r\n rightStart: exYears.includes('-') ? 460 : 420,\r\n rightEnd: 600,\r\n top: top + 35,\r\n color: '#dddddd'\r\n };\r\n\r\n const tableNotes = {\r\n size: 8\r\n };\r\n\r\n const createTopLine = color => {\r\n doc\r\n .lineWidth(2)\r\n .moveTo(left, top)\r\n .lineTo(left + 700, top)\r\n .stroke(color);\r\n };\r\n\r\n const createBlock = color => {\r\n doc.rect(left, top, 33, 20).fillAndStroke(color);\r\n };\r\n\r\n const createSymbol = label => {\r\n doc\r\n .fillColor(symbol.color)\r\n .fontSize(symbol.size)\r\n .font('Helvetica-Bold')\r\n .text(label, left + 5, top + 5)\r\n .font('Helvetica');\r\n };\r\n const createTitle = titleText => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(title.size)\r\n .font('Helvetica-Bold')\r\n .text(titleText, left + 38, top + 10)\r\n .font('Helvetica');\r\n };\r\n\r\n const createTable = img => {\r\n // doc.rect(left + 12, top + 50, 590, 630).fillAndStroke('#AFAFAF');\r\n doc.image(img, left + 12, top + 45, { height: 645 });\r\n };\r\n\r\n const createTableHeader = headerText => {\r\n doc\r\n .fillColor(header.color)\r\n .fontSize(header.size)\r\n .text(headerText, header.left, header.top);\r\n doc.fontSize(header.size - 4);\r\n doc\r\n .text('-1', header.left + (exYears.includes('-') ? 74 : 50), header.top - 5)\r\n .text('-1', header.left + (exYears.includes('-') ? 94 : 73), header.top - 5)\r\n .text('-1', header.left + (exYears.includes('-') ? 131 : 109), header.top - 5)\r\n .text('-1', header.left + (exYears.includes('-') ? 148 : 126), header.top - 5);\r\n };\r\n\r\n const createLine = () => {\r\n doc\r\n .lineWidth(1)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftEnd, line.top)\r\n .moveTo(line.leftStart, line.top)\r\n .lineTo(line.leftStart, line.top + 5)\r\n .moveTo(line.rightStart, line.top)\r\n .lineTo(line.rightEnd, line.top)\r\n .moveTo(line.rightEnd, line.top)\r\n .lineTo(line.rightEnd, line.top + 5)\r\n .stroke(line.color);\r\n };\r\n\r\n const createTableNotes = () => {\r\n doc\r\n .fillColor(title.color)\r\n .fontSize(tableNotes.size)\r\n .font('Helvetica-Bold')\r\n .text('Table Notes:', left + 30, top)\r\n .font('Helvetica')\r\n .moveDown(0)\r\n .text(\r\n 'Values in table are calculated using CL exceedances greater than or equal to “0” (i.e., all values indicating an exceedance)');\r\n };\r\n const promises = [];\r\n const divTable1 = document.createElement('div');\r\n const tableContainer1 = document.getElementById('table-container');\r\n const tableContainerID1 = `table-container-${shortid.generate()}`;\r\n const tableID1 = `table-container-${shortid.generate()}`;\r\n divTable1.setAttribute(\"style\", \"width:2000px;\");\r\n divTable1.setAttribute('id', tableContainerID1);\r\n tableContainer1.appendChild(divTable1);\r\n\r\n const tableData = Object.assign({}, data);\r\n\r\n // SECTION TO CREATE TABLE PART 1\r\n ReactDOM.render(, divTable1);\r\n promises.push(getTableImage(tableID1));\r\n\r\n\r\n const divTable2 = document.createElement('div');\r\n const tableContainer2 = document.getElementById('table-container');\r\n const tableContainerID2 = `table-container-${shortid.generate()}`;\r\n const tableID2 = `table-container-${shortid.generate()}`;\r\n divTable2.setAttribute(\"style\", \"width:2000px;\");\r\n divTable2.setAttribute('id', tableContainerID2);\r\n tableContainer2.appendChild(divTable2);\r\n // SECTION TO CREATE TABLE PART 2\r\n ReactDOM.render(, divTable2);\r\n promises.push(getTableImage(tableID2));\r\n\r\n Promise.all(promises).then(results => {\r\n createTopLine(ex.color);\r\n createBlock(ex.color);\r\n createSymbol(ex.symbol);\r\n createTitle(ex.title);\r\n createTable(results[0]);\r\n createTableHeader(`${exYears} eq ha yr (kg ha yr )`);\r\n createLine();\r\n top = 701;\r\n createTableNotes();\r\n\r\n // Create new page\r\n doc.addPage({margin: reportDefaults.pageMargin});\r\n top = 0;\r\n\r\n createTopLine(ex.color);\r\n createBlock(ex.color);\r\n createSymbol(ex.symbol);\r\n createTitle(ex.title);\r\n createTable(results[1]);\r\n createTableHeader(`${exYears} eq ha yr (kg ha yr )`);\r\n createLine();\r\n top = 701;\r\n createTableNotes();\r\n\r\n tableContainer1.innerHTML = '';\r\n tableContainer2.innerHTML = '';\r\n resolve();\r\n\r\n });\r\n });\r\n};\r\n","import React, { Component } from \"react\";\r\n// import FormControl from \"@material-ui/core/FormControl\";\r\n// import FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\n// import Radio from '@material-ui/core/Radio';\r\n// import RadioGroup from '@material-ui/core/RadioGroup';\r\n// import Typography from '@material-ui/core/Typography';\r\nimport Popover from \"@material-ui/core/Popover\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { Motion, spring } from \"@serprex/react-motion\";\r\n\r\nimport {\r\n\ttoggleDownloadSpinner,\r\n\ttoggleReportSpinner,\r\n} from \"js/actions/mapActions\";\r\nimport { addTemporaryGlobalStyles } from \"js/utils/styles\";\r\nimport { getExceedanceData } from \"js/utils/helper\";\r\n// import { Information } from 'js/utils/Icons';\r\n\r\nimport { store } from \"js/store\";\r\nimport { ex_chartInfo } from \"js/config/ExceedanceOptions\";\r\nimport { reportURLs, popupInfo } from \"js/config/config\";\r\n\r\nimport { createCSV } from \"js/components/pdf/csvGenerator\";\r\nimport { createPDF } from \"js/components/pdf/pdfGenerator\";\r\n\r\nexport default class ReportPopup extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tdisplayReport: false,\r\n\t\t\treportRange: \"10\",\r\n\t\t\treportYear: 2020,\r\n\t\t\tanchorEl: null,\r\n\t\t\texpandLeft: false,\r\n\t\t\texpandRight: false,\r\n\t\t\tnoAnimation: false,\r\n\t\t\tdata: null\r\n\t\t};\r\n\r\n\t\tthis.isIe11 = !!window.MSInputMethodContext && !!document.documentMode;\r\n\t}\r\n\r\n\tcreateReport = () => {\r\n\t\tthis.setState({ noAnimation: false });\r\n\r\n\t\tconst screenWidth = window.innerWidth;\r\n\t\tconst { right, left } = document\r\n\t\t\t.querySelector(\".esri-popup__main-container\")\r\n\t\t\t.getBoundingClientRect();\r\n\t\tconst popupClassList = document.querySelector(\".esri-popup\").classList;\r\n\t\tif (\r\n\t\t\tscreenWidth - right < 140 &&\r\n\t\t\t(popupClassList.contains(\"esri-popup--aligned-top-center\") ||\r\n\t\t\t\tpopupClassList.contains(\"esri-popup--aligned-bottom-center\"))\r\n\t\t) {\r\n\t\t\tthis.setState({ expandLeft: true });\r\n\t\t} else {\r\n\t\t\tthis.setState({ expandLeft: false });\r\n\t\t}\r\n\t\tif (\r\n\t\t\tleft < 140 ||\r\n\t\t\tpopupClassList.contains(\"esri-popup--aligned-top-right\") ||\r\n\t\t\tpopupClassList.contains(\"esri-popup--aligned-bottom-right\")\r\n\t\t) {\r\n\t\t\tthis.setState({ expandRight: true });\r\n\t\t\tif (popupClassList.contains(\"esri-popup--aligned-top-center\")) {\r\n\t\t\t\tpopupClassList.remove(\"esri-popup--aligned-top-center\");\r\n\t\t\t}\r\n\t\t\tif (popupClassList.contains(\"esri-popup--aligned-bottom-center\")) {\r\n\t\t\t\tpopupClassList.remove(\"esri-popup--aligned-bottom-center\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.setState({ expandRight: false });\r\n\t\t}\r\n\r\n\t\tif (document.querySelector(\".esri-popup__pagination-next\") !== null) {\r\n\t\t\tdocument\r\n\t\t\t\t.querySelector(\".esri-popup__pagination-next\")\r\n\t\t\t\t.addEventListener(\"click\", () => {\r\n\t\t\t\t\tthis.setState({ displayReport: false, noAnimation: true });\r\n\t\t\t\t});\r\n\t\t\tdocument\r\n\t\t\t\t.querySelector(\".esri-popup__pagination-previous\")\r\n\t\t\t\t.addEventListener(\"click\", () => {\r\n\t\t\t\t\tthis.setState({ displayReport: false, noAnimation: true });\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tthis.setState({ displayReport: !this.state.displayReport });\r\n\t};\r\n\r\n\tgenerateDownload = (type) => {\r\n\t\t/* if (this.state.reportYear < 1850) {\r\n this.setState({ reportYear: 1850 });\r\n }\r\n else if (this.state.report > 2100) {\r\n this.setState({ reportYear: 2100 });\r\n } */\r\n\t\tif (type === \"pdf\") {\r\n\t\t\tstore.dispatch(toggleReportSpinner());\r\n\t\t} else {\r\n\t\t\tstore.dispatch(toggleDownloadSpinner());\r\n\t\t}\r\n\t\tconst name = this.props.classification; //this.props.classification; //classification is the PROFILE field\r\n\t\tconst year = this.state.reportYear;\r\n\t\tconst range = this.state.reportRange;\r\n\t\tconst title = this.props.title.replace(/ /g, \"\");\r\n\r\n\t\tconst clTableUrl =\r\n\t\t\treportURLs.cl[`${title}`] + reportURLs.cl.table.replace(\"{NAME}\", name);\r\n\t\tconst exTableUrl =\r\n\t\t\treportURLs.ex[`${title}-${range}`] +\r\n\t\t\treportURLs.ex.table.replace(\"{NAME}\", name).replace(\"{YEAR}\", year);\r\n\t\tconst promises = [fetch(clTableUrl), fetch(exTableUrl)];\r\n\r\n\t\tconst exChartData = ex_chartInfo.map((exceedance) =>\r\n\t\t\tgetExceedanceData(\r\n\t\t\t\treportURLs.ex,\r\n\t\t\t\ttitle,\r\n\t\t\t\tname,\r\n\t\t\t\texceedance.variable,\r\n\t\t\t\texceedance.ex,\r\n\t\t\t\tyear,\r\n\t\t\t\trange\r\n\t\t\t)\r\n\t\t);\r\n\t\tconst dataPromises = promises.concat(exChartData);\r\n\r\n\t\tPromise.all(dataPromises)\r\n\t\t\t.then((responses) => {\r\n\t\t\t\treturn Promise.all(\r\n\t\t\t\t\tresponses.map((response, i) => (i < 2 ? response.json() : response))\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t\t.then((responses) => {\r\n\t\t\t\tconst dataArray = responses.map((res, i) =>\r\n\t\t\t\t\ti < 2 ? res.features : res\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Map each dataset to standardized keys\r\n\t\t\t\tconst kgClTableData = dataArray[0].filter(\r\n\t\t\t\t\t(v) => v.attributes.unit === \"kg\"\r\n\t\t\t\t);\r\n\t\t\t\tconst eqClTableData = dataArray[0].filter(\r\n\t\t\t\t\t(v) => v.attributes.unit !== \"kg\"\r\n\t\t\t\t); //RTI Note: This includes eq and ha\r\n\t\t\t\t//const eqClTableData = dataArray[0].filter(v => v.attributes.unit === 'eq');\r\n\t\t\t\t//const areaClTableData = dataArray[0].filter(v => v.attributes.unit !== 'kg');\r\n\t\t\t\tconsole.log(\"kgClTableData:\");\r\n\t\t\t\tconsole.log(kgClTableData);\r\n\t\t\t\tconsole.log(\"eqClTableData:\");\r\n\t\t\t\tconsole.log(eqClTableData);\r\n\t\t\t\tconst listClStatistics = [\r\n\t\t\t\t\t\"count\",\r\n\t\t\t\t\t\"max\",\r\n\t\t\t\t\t\"mean\",\r\n\t\t\t\t\t\"min\",\r\n\t\t\t\t\t\"percentile5\",\r\n\t\t\t\t\t\"percentile10\",\r\n\t\t\t\t\t\"percentile50\",\r\n\t\t\t\t\t\"std\",\r\n\t\t\t\t\t\"poly_area\",\r\n\t\t\t\t\t\"land_area\",\r\n\t\t\t\t\t\"cl_area\",\r\n\t\t\t\t];\r\n\t\t\t\t//const listClStatistics = [\"count\", \"max\", \"mean\",\"min\",\"percentile5\",\"percentile10\",\"percentile50\",\"std\"];\r\n\t\t\t\t//const listClAreaStatistics = [\"poly_area\",\"land_area\",\"cl_area\" ]\r\n\t\t\t\tvar cl = [];\r\n\r\n\t\t\t\tlistClStatistics.forEach((statistic) => {\r\n\t\t\t\t\tcl = cl.concat(\r\n\t\t\t\t\t\teqClTableData\r\n\t\t\t\t\t\t\t.filter(function (val) {\r\n\t\t\t\t\t\t\t\t//RTI added ... to filter out unneeded values .. this may be altered if we move areas and counts to another table\r\n\t\t\t\t\t\t\t\t// if (val.attributes.cl === \"hsrercc\" || val.attributes.cl === \"hsreroc\"){\r\n\t\t\t\t\t\t\t\t// if (statistic === \"count\"){\r\n\t\t\t\t\t\t\t\t// if (val.attributes.unit !== \"number\") {\r\n\t\t\t\t\t\t\t\t// console.log(\"skipping ...\");\r\n\t\t\t\t\t\t\t\t// return false; // skip\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t// }else{\r\n\t\t\t\t\t\t\t\t// //For all other statistics we don't want the number units\r\n\t\t\t\t\t\t\t\t// if (val.attributes.unit === \"number\") {\r\n\t\t\t\t\t\t\t\t// console.log(\"skipping ...\");\r\n\t\t\t\t\t\t\t\t// return false; // skip'\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.map((v) => {\r\n\t\t\t\t\t\t\t\tconst kgVal = kgClTableData.filter(\r\n\t\t\t\t\t\t\t\t\t(feature) =>\r\n\t\t\t\t\t\t\t\t\t\tfeature.attributes.cl === v.attributes.cl &&\r\n\t\t\t\t\t\t\t\t\t\t//feature.attributes[statistic] === v.attributes[statistic] &&\r\n\t\t\t\t\t\t\t\t\t\tfeature.attributes.variable === v.attributes.variable\r\n\t\t\t\t\t\t\t\t)[0];\r\n\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tvalue: v.attributes[statistic],\r\n\t\t\t\t\t\t\t\t\tcl: v.attributes.cl,\r\n\t\t\t\t\t\t\t\t\tstatistic: statistic,\r\n\t\t\t\t\t\t\t\t\tunit: v.attributes.unit,\r\n\t\t\t\t\t\t\t\t\tvariable: v.attributes.variable,\r\n\t\t\t\t\t\t\t\t\tkgVal: kgVal ? kgVal.attributes[statistic] : null,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\tconst kgExTableData = dataArray[1].filter(\r\n\t\t\t\t\t(v) => v.attributes.unit === \"kg\"\r\n\t\t\t\t);\r\n\t\t\t\tconst eqExTableData = dataArray[1].filter(\r\n\t\t\t\t\t(v) => v.attributes.unit === \"eq\"\r\n\t\t\t\t);\r\n\t\t\t\tconsole.log(\"kgExTableData:\");\r\n\t\t\t\tconsole.log(kgExTableData);\r\n\t\t\t\tconsole.log(\"eqExTableData:\");\r\n\t\t\t\tconsole.log(eqExTableData);\r\n\t\t\t\tconst listExStatistics = [\r\n\t\t\t\t\t\"count\",\r\n\t\t\t\t\t\"extent\",\r\n\t\t\t\t\t\"pos_max\",\r\n\t\t\t\t\t\"mean\",\r\n\t\t\t\t\t\"pos_min\",\r\n\t\t\t\t\t\"pos_mean\",\r\n\t\t\t\t\t\"percentile5\",\r\n\t\t\t\t\t\"percentile95\",\r\n\t\t\t\t\t\"pos_percentile5\",\r\n\t\t\t\t\t\"pos_percentile50\",\r\n\t\t\t\t\t\"pos_percentile95\",\r\n\t\t\t\t];\r\n\t\t\t\tvar ex = [];\r\n\r\n\t\t\t\tlistExStatistics.forEach((statistic) => {\r\n\t\t\t\t\tex = ex.concat(\r\n\t\t\t\t\t\teqExTableData.map((v) => {\r\n\t\t\t\t\t\t\tconst kgVal = kgExTableData.filter(\r\n\t\t\t\t\t\t\t\t(feature) =>\r\n\t\t\t\t\t\t\t\t\tfeature.attributes.dep === v.attributes.dep &&\r\n\t\t\t\t\t\t\t\t\tfeature.attributes.ex === v.attributes.ex &&\r\n\t\t\t\t\t\t\t\t\tfeature.attributes.variable === v.attributes.variable\r\n\t\t\t\t\t\t\t)[0]; //feature.attributes[statistic] === v.attributes[statistic] &&\r\n\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tvalue: v.attributes[statistic],\r\n\t\t\t\t\t\t\t\tex: v.attributes.ex,\r\n\t\t\t\t\t\t\t\tdep: v.attributes.dep,\r\n\t\t\t\t\t\t\t\tstatistic: statistic.replace(\"_\", \"-\"),\r\n\t\t\t\t\t\t\t\tunit: v.attributes.unit,\r\n\t\t\t\t\t\t\t\tvariable: v.attributes.variable,\r\n\t\t\t\t\t\t\t\tyear: v.attributes.year,\r\n\t\t\t\t\t\t\t\tkgVal: kgVal ? kgVal.attributes[statistic] : null,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst exCharts = [];\r\n\t\t\t\tresponses.forEach((response, i) => {\r\n\t\t\t\t\tif (i > 1) {\r\n\t\t\t\t\t\texCharts.push(response);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst data = {\r\n\t\t\t\t\texCharts,\r\n\t\t\t\t\tcl,\r\n\t\t\t\t\tex,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (type === \"pdf\") {\r\n\t\t\t\t\tcreatePDF(this.state, this.props, data);\r\n\t\t\t\t} else if (type === \"csv\") {\r\n\t\t\t\t\tcreateCSV(this.state, this.props, data);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.log(\"err\", err);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tthis.state.reportYear === 2010 &&\r\n\t\t\t\t\tthis.state.reportRange === \"3\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.setState({ reportRange: \"10\" });\r\n\t\t\t\t\tthis.generateDownload(\"csv\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tupdateReportRange = (event, value) => {\r\n\t\tthis.setState({ reportRange: value });\r\n\t};\r\n\r\n\tupdateReportYear = (event) => {\r\n\t\tthis.setState({ reportYear: parseInt(event.target.value) });\r\n\t\tif (event.target.value <= 2000 || event.target.value > 2018) {\r\n\t\t\tthis.setState({ reportRange: \"10\" });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.setState({ reportRange: \"3\" });\r\n\t\t}\r\n\t};\r\n\r\n\tvalidateReportYear = (event) => {\r\n\t\tif (parseInt(event.target.value) > 2100) {\r\n\t\t\tthis.setState({ reportYear: 2100 });\r\n\t\t} else if (parseInt(event.target.value) < 1860) {\r\n\t\t\tthis.setState({ reportYear: 1860 });\r\n\t\t}\r\n\t};\r\n\r\n\thandlePopoverOpen = (event) => {\r\n\t\tconsole.log(\"open popover\");\r\n\t\tthis.setState({ anchorEl: event.target });\r\n\t};\r\n\r\n\thandlePopoverClose = () => {\r\n\t\tthis.setState({ anchorEl: null });\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\tagency,\r\n\t\t\tarea,\r\n\t\t\tname,\r\n\t\t\tsectionTitle,\r\n\t\t\tinformation,\r\n\t\t\tarea_classification,\r\n\t\t} = this.props;\r\n\t\tconst { anchorEl, reportRange } = this.state;\r\n\t\tconst disabled = reportRange === null;\r\n\t\tconst open = !!anchorEl;\r\n\r\n\t\t// offset for IE 11 (does not understand box-sizing CSS rule)\r\n\t\tconst ie11Offset = this.isIe11 ? 15 : 0;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{(interpolation) => {\r\n\t\t\t\t\tconst xPosition = interpolation.x;\r\n\t\t\t\t\tlet marginLeft;\r\n\t\t\t\t\tlet width;\r\n\t\t\t\t\tif (this.state.noAnimation) {\r\n\t\t\t\t\t\tmarginLeft = `-${!this.state.displayReport ? 0 : 310 / 2}px`;\r\n\t\t\t\t\t\twidth = this.state.displayReport ? \"645px\" : \"335px\";\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmarginLeft = `-${xPosition === 330 ? 0 : (xPosition - 335) / 2}px`;\r\n\t\t\t\t\t\twidth = xPosition + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst sheet = addTemporaryGlobalStyles();\r\n\t\t\t\t\tif (this.state.expandLeft && this.state.noAnimation) {\r\n\t\t\t\t\t\tsheet.insertRule(\r\n\t\t\t\t\t\t\t`.esri-popup__main-container{margin-left: ${marginLeft}`,\r\n\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else if (this.state.expandLeft && !this.state.noAnimation) {\r\n\t\t\t\t\t\tsheet.insertRule(\r\n\t\t\t\t\t\t\t`.esri-popup__main-container{margin-left: -${\r\n\t\t\t\t\t\t\t\txPosition === 330 ? 0 : xPosition - 335\r\n\t\t\t\t\t\t\t}px`,\r\n\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else if (this.state.expandRight) {\r\n\t\t\t\t\t\tsheet.insertRule(\".esri-popup__main-container{margin-left: 0\", 0);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsheet.insertRule(`.esri-popup{margin-left: ${marginLeft}`, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    {name}
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    {`Total Area: ${area} ha`}
    \r\n\t\t\t\t\t\t\t\t\t
    {`Area classification: ${area_classification}`}
    \r\n\t\t\t\t\t\t\t\t\t
    {`Agency: ${agency}`}
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    {sectionTitle}
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{information === \"\" ? (\r\n\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\tDeposition; years available\r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\tTDEP 2002-2018 (3-year averages),\r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\tCMAQ 2004-2011 (3-year averages),\r\n\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\tCMIP5 1860-2100 (10-year averages for each decade)\r\n\t\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t
    • Critical loads (CLs)
    • \r\n\t\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\tCL exceedences; years available 1860-2100 corresponding\r\n\t\t\t\t\t\t\t\t\t\t\t\tto available deposition years\r\n\t\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tinformation\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{agency !== \"Bureau of Indian Affairs (BIA)\" && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    Download Summary Tables
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    Summary Table Settings
    \r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tThe summary tables will include all critical loads and all\r\n\t\t\t\t\t\t\t\t\t\tavailable deposition and exceedance estimates for the\r\n\t\t\t\t\t\t\t\t\t\tselected year (below) and land unit. Refer to the Summary\r\n\t\t\t\t\t\t\t\t\t\tTables Description for additional information about the\r\n\t\t\t\t\t\t\t\t\t\tsummary tables.\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\t\t\t1 Year\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t\t\t\t\t\t3 Years\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t\t{reportYear > 180 ? reportYear - 1 : \"\"}\r\n\t\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{/*
    \r\n\t\t\t\t\t\t\t\t\t{reportYear < 2100 ? reportYear + 1 : \"\"}\r\n\t\t\t\t\t\t\t\t
    */}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{/* {\r\n\t\t\t\t\t\t\t\t\tthis.generateDownload(\"pdf\");\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tclassName=\"popup-button report\">\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    generate report
    \r\n\t\t\t\t\t\t\t\t\t
    (PDF)
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t */}\r\n\t\t\t\t\t\t\t\t{agency !== \"Bureau of Indian Affairs (BIA)\" && (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.generateDownload(\"csv\");\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"popup-button report extended\">\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    download summary tables
    \r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t(CSV tables for Deposition, Critical Loads (CLs),\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    and CL Exceedances)\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{agency !== \"Bureau of Indian Affairs (BIA)\" && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\tdownload summary tables description\r\n\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    {popupInfo}
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","import React from 'react';\r\nimport CLTable from 'js/components/table/CLTable';\r\nimport ExSevTable from 'js/components/table/ExSevTable';\r\nimport ExTable from 'js/components/table/ExTable';\r\nimport DepTable from 'js/components/table/DepTable';\r\nimport { getDepositionData } from 'js/utils/helper';\r\nimport { reportURLs } from 'js/config/config';\r\nimport JSZip from 'jszip';\r\nimport FileSaver from 'file-saver';\r\nimport { csvFileNames } from 'js/config/config';\r\n\r\nimport ReactDOM from 'react-dom';\r\n// import { createCL } from 'js/components/pdf/CLReport';\r\nimport { toggleDownloadSpinner } from 'js/actions/mapActions';\r\nimport { store } from 'js/store';\r\nimport shortid from 'shortid';\r\n\r\nexport const createCSV = (state, props, data) => {\r\n const {\r\n reportRange,\r\n reportYear\r\n } = state;\r\n\r\n const depYears =\r\n\t\treportRange === \"3\"\r\n\t\t\t? `${reportYear - 2}-${reportYear}`\r\n\t\t\t: `${reportYear - 9}-${reportYear}`;\r\n const exYears =\r\n reportRange === \"3\" ? `${reportYear - 2}-${reportYear}` : `${reportYear - 9}-${reportYear}`;\r\n\r\n const promises = [];\r\n\r\n const exportTableToCSV = (tableId) => {\r\n const csv = [];\r\n const rows = Array.from(document.querySelectorAll(`#${tableId} tr`));\r\n rows.forEach((rowElem) => {\r\n const cols = Array.from(rowElem.querySelectorAll('td, th'));\r\n const row = [];\r\n\r\n cols.forEach((col) => {\r\n let colText = col.innerText.replace(/\\r?\\n|\\r/g, \" \");\r\n row.push(colText);\r\n });\r\n csv.push(row.join(','));\r\n });\r\n\r\n return csv;\r\n };\r\n\r\n const depVariables = [ 'totaln', 'totals', 'totalns' ];\r\n\r\n // Create Deposition tables\r\n const depDataPromises = depVariables.map(variable => getDepositionData(reportURLs.dep, props.title, props.classification, variable, reportYear, reportRange));\r\n Promise.all(depDataPromises)\r\n .then(response => {\r\n depVariables.forEach((deposition, i) => {\r\n const divTable = document.createElement('div');\r\n const tableContainer = document.getElementById('table-container');\r\n const tableContainerID = `table-container-${shortid.generate()}`;\r\n const tableID = `table-container-${shortid.generate()}`;\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n divTable.setAttribute('id', tableContainerID);\r\n tableContainer.appendChild(divTable);\r\n const tableData = response[i].tableData;\r\n\r\n ReactDOM.render(, divTable);\r\n promises.push(exportTableToCSV(tableID));\r\n })\r\n\r\n // Create Critical Loads table\r\n let divTable = document.createElement('div');\r\n let tableContainer = document.getElementById('table-container');\r\n let tableContainerID = `table-container-${shortid.generate()}`;\r\n let tableID = `table-container-${shortid.generate()}`;\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n divTable.setAttribute('id', tableContainerID);\r\n tableContainer.appendChild(divTable);\r\n const clTableData = data.cl.filter(v => {\r\n return (\r\n v.statistic === 'count' ||\r\n v.statistic === 'mean' ||\r\n v.statistic === 'std' ||\r\n v.statistic === 'min' ||\r\n v.statistic === 'percentile5' ||\r\n v.statistic === 'percentile50' ||\r\n v.statistic === 'percentile95' ||\r\n v.statistic === 'max'\r\n );\r\n });\r\n ReactDOM.render(, divTable);\r\n promises.push(exportTableToCSV(tableID));\r\n\r\n // Create Exceedance table\r\n divTable = document.createElement('div');\r\n tableContainer = document.getElementById('table-container');\r\n tableContainerID = `table-container-${shortid.generate()}`;\r\n tableID = `table-container-${shortid.generate()}`;\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n divTable.setAttribute('id', tableContainerID);\r\n tableContainer.appendChild(divTable);\r\n const exTableData = Object.assign({}, data);\r\n ReactDOM.render(, divTable);\r\n promises.push(exportTableToCSV(tableID));\r\n\r\n\r\n // Create Exceedance Severity table\r\n divTable = document.createElement('div');\r\n tableContainer = document.getElementById('table-container');\r\n tableContainerID = `table-container-${shortid.generate()}`;\r\n tableID = `table-container-${shortid.generate()}`;\r\n divTable.setAttribute(\"style\", \"width:2000px;\");\r\n divTable.setAttribute('id', tableContainerID);\r\n tableContainer.appendChild(divTable);\r\n const exSevTableData = Object.assign({}, data);\r\n ReactDOM.render(, divTable);\r\n promises.push(exportTableToCSV(tableID));\r\n\r\n\r\n Promise.all(promises).then(results => {\r\n //Create zip file\r\n const zip = new JSZip();\r\n\r\n //Download file and add to zip\r\n results.forEach((csvArr, i) => {\r\n const csvFile = new Blob([csvArr.join('\\n')], {type: 'text/csv'});\r\n zip.file(`${csvFileNames[i].replace('{depYears}', depYears).replace('{exYears}', exYears)}.csv`, csvFile);\r\n });\r\n\r\n zip.generateAsync({type: 'blob'}).then((content) => {\r\n FileSaver.saveAs(content, `${props.name}-${props.title}(${reportRange}yr averages).zip`);\r\n store.dispatch(toggleDownloadSpinner());\r\n });\r\n\r\n });\r\n });\r\n\r\n};\r\n","// Assist in adding temporary global styles, for elements that don't\r\n// exist and can't be selected prior to instantiation.\r\n// This function creates a global style holder shared by all components,\r\n// which only persists styles for one function iteration.\r\nexport const addTemporaryGlobalStyles = () => {\r\n let sheet = (() => {\r\n const style = document.createElement('style');\r\n style.setAttribute('id', 'sharedStyles');\r\n style.appendChild(document.createTextNode(''));\r\n document.head.appendChild(style);\r\n return style.sheet;\r\n })();\r\n\r\n sheet = document.querySelector('#sharedStyles').sheet || sheet;\r\n\r\n // Firefox fix, rules/ cssRules are non-standard attributes :(\r\n const rules = sheet.rules || sheet.cssRules;\r\n\r\n // Mobile Safari is a terrible browser and treats this sheet delete action as essentially async.\r\n // We keep removing rule 0 until the rule count === 0;\r\n // This works on chrome too;\r\n let ruleCount = rules.length;\r\n for (let i = 0; i < ruleCount; ruleCount--) {\r\n sheet.deleteRule(i);\r\n }\r\n\r\n return sheet;\r\n};\r\n","import React from 'react';\r\nimport { render } from 'react-dom';\r\nimport ReportPopup from 'js/components/popup/ReportPopup';\r\n//import intl from '@arcgis/core/intl';\r\n\r\nconst makePopup = (feature, title) => {\r\n const attributes = feature.attributes;\r\n const geometry = feature.geometry;\r\n const popupNode = document.createElement('div');\r\n let agencyCode = attributes.Agency || attributes.TYPE;\r\n let name = attributes.NAME || attributes.Name;\r\n const classification = attributes.PROFILE;\r\n let sectionTitle=\"View summary statistics for this land unit\";\r\n let information=\"\"; \r\n let area=parseInt(attributes.Shape_Area_HA).toLocaleString(\"en-US\");\r\n let area_classification=title;\r\n if (title.includes('BIA')){\r\n name=attributes.Land_Unit_Name;\r\n area=parseInt(attributes.Total_Area).toLocaleString(\"en-US\");\r\n agencyCode='BIA'\r\n sectionTitle=\"\";\r\n area_classification=attributes.Area_Classification;\r\n information=\"Information and downloadable data for this land unit are not yet available. \";\r\n }\r\n \r\n let agency = '';\r\n switch (agencyCode) {\r\n case 'EPA':\r\n agency = 'Environmental Protection Agency (EPA)';\r\n break;\r\n case 'NPS':\r\n agency = 'National Park Service (NPS)';\r\n break;\r\n case 'USFS':\r\n agency = 'USDA Forest Service (USFS)';\r\n break;\r\n case 'FWS':\r\n agency = 'U.S. Fish and Wildlife Service (FWS)';\r\n break;\r\n case 'BIA':\r\n agency = 'Bureau of Indian Affairs (BIA)';\r\n break;\r\n case 'BLM':\r\n agency = 'Bureau of Land Management (BLM)';\r\n break;\r\n default:\r\n agency = 'Not Available';\r\n }\r\n render(\r\n ,\r\n popupNode\r\n );\r\n return popupNode;\r\n};\r\n\r\nexport const getPopupTemplate = (layerName, feature) => {\r\n console.log('popupTemplate.js');\r\n console.log(layerName);\r\n console.log(feature);\r\n var field=null;\r\n // const numberFormatOneDecimalOptions = intl.convertNumberFormatToIntlOptions({\r\n // places: 1\r\n // });\r\n\r\n if (layerName === 'States') {\r\n return {\r\n title: 'States',\r\n content:\r\n 'State: {STATE_NAME}
    Sub Region: {SUB_REGION}'\r\n };\r\n } else if (\r\n layerName === 'Counties' ||\r\n layerName === 'Counties_generalized5m'\r\n ) {\r\n return {\r\n title: 'Counties',\r\n content: 'County: {COUNTYNAME}
    State: {STATE}'\r\n };\r\n } else if (\r\n layerName === 'Level 1 Ecoregions' ||\r\n layerName === 'NA_CEC_Eco_Level1_generalized10m'\r\n ) {\r\n return {\r\n title: 'Level 1 Ecoregions',\r\n content: 'Name: {NA_L1NAME}'\r\n };\r\n } else if (\r\n layerName === 'Level 2 Ecoregions' ||\r\n layerName === 'NA_CEC_Eco_Level2_generalized10m'\r\n ) {\r\n return {\r\n title: 'Level 2 Ecoregions',\r\n content: 'Name: {NA_L2NAME}'\r\n };\r\n } else if (\r\n layerName === 'Level 3 Ecoregions' ||\r\n layerName === 'NA_CEC_Eco_Level3_generalized10m'\r\n ) {\r\n return {\r\n title: 'Level 3 Ecoregions',\r\n content: 'Name: {NA_L3NAME}'\r\n };\r\n } else if (\r\n layerName === 'Class I Areas' ||\r\n layerName === 'Class_I_generalized3m'\r\n ) {\r\n return {\r\n title: 'Class I Areas',\r\n content: makePopup(feature, 'Class I Areas')\r\n };\r\n } else if (\r\n layerName === 'Federal Administrative Areas' ||\r\n layerName === 'Admin_Boundaries_generalized10m'\r\n ) {\r\n return {\r\n title: 'Federal Administrative Areas',\r\n content: makePopup(feature, 'Federal Administrative Areas')\r\n };\r\n } else if (\r\n layerName === 'Wilderness Areas' ||\r\n layerName === 'Wilderness_Boundaries_generalized3m'\r\n ) {\r\n return {\r\n title: 'Wilderness Areas',\r\n content: makePopup(feature, 'Wilderness Areas')\r\n };\r\n } else if (\r\n layerName === \"BIA Land Area Representations\"\r\n ) {\r\n return {\r\n\t\t\ttitle: \"BIA Land Area Representations\",\r\n\t\t\tcontent: makePopup(feature, \"BIA Land Area Representations\"),\r\n\t\t};\r\n } else if (layerName === 'Terrestrial Forest Acidification') {\r\n return {\r\n expressionInfos: [{\r\n name: \"Pixel_Value\",\r\n expression: \"Text(Round($feature['Pixel Value'],1),'#,###.0')\"\r\n }],\r\n title: 'Terrestrial Forest Acidification',\r\n content: 'Value: {expression/Pixel_Value} eq'\r\n };\r\n } else if (layerName === 'Aquatic Acidification') {\r\n //var val=Intl.NumberFormat({nANC50}, {places: 1})\r\n return {\r\n expressionInfos: [{\r\n name: \"nANC50\",\r\n expression: \"Text(Round($feature.nANC50,1),'#,###.0')\"\r\n }],\r\n title: 'Aquatic Acidification',\r\n content: 'Value: {expression/nANC50} eq'\r\n };\r\n } else if (layerName === 'Forest (min)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"FOR_CL_MIN\",\r\n expression: \"Text(Round($feature.FOR_CL_MIN,1),'#,###.0')\"\r\n }],\r\n title: 'Forest Ecosystems (min)',\r\n content: 'Value: {expression/FOR_CL_MIN} kg'\r\n };\r\n } else if (layerName === 'Forest (min) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"FOR_CL_MIN_eq\",\r\n expression: \"Text(Round($feature.FOR_CL_MIN_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Forest Ecosystems (min)',\r\n content: 'Value: {expression/FOR_CL_MIN_eq} eq'\r\n };\r\n } else if (layerName === 'Forest (mid)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"FOR_CL_MID\",\r\n expression: \"Text(Round($feature.FOR_CL_MID,1),'#,###.0')\"\r\n }],\r\n title: 'Forest Ecosystems (mid)',\r\n content: 'Value: {expression/FOR_CL_MID} kg'\r\n };\r\n } else if (layerName === 'Forest (mid) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"FOR_CL_MID_eq\",\r\n expression: \"Text(Round($feature.FOR_CL_MID_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Forest Ecosystems (mid)',\r\n content: 'Value: {expression/FOR_CL_MID_eq} eq'\r\n };\r\n } else if (layerName === 'Herbaceous (min)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"HPS_CL_MIN\",\r\n expression: \"Text(Round($feature.HPS_CL_MIN,1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Plants and Shrubs (min)',\r\n content: 'Value: {expression/HPS_CL_MIN} kg'\r\n };\r\n } else if (layerName === 'Herbaceous (min) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"HPS_CL_MIN_eq\",\r\n expression: \"Text(Round($feature.HPS_CL_MIN_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Plants and Shrubs (min)',\r\n content: 'Value: {expression/HPS_CL_MIN_eq} eq'\r\n };\r\n } else if (layerName === 'Herbaceous (mid)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"HPS_CL_MID\",\r\n expression: \"Text(Round($feature.HPS_CL_MID,1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Plants and Shrubs (mid)',\r\n content: 'Value: {expression/HPS_CL_MID} kg'\r\n };\r\n } else if (layerName === 'Herbaceous (mid) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"HPS_CL_MID_eq\",\r\n expression: \"Text(Round($feature.HPS_CL_MID_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Plants and Shrubs (mid)',\r\n content: 'Value: {expression/HPS_CL_MID_eq} eq'\r\n };\r\n } else if (layerName === 'Mychorrhizal Fungi (min)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"MF_CL_MIN\",\r\n expression: \"Text(Round($feature.MF_CL_MIN,1),'#,###.0')\"\r\n }],\r\n title: 'Mycorrhizal Fungi (min)',\r\n content: 'Value: {expression/MF_CL_MIN} kg'\r\n };\r\n } else if (layerName === 'Mychorrhizal Fungi (min) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"MF_CL_MIN_eq\",\r\n expression: \"Text(Round($feature.MF_CL_MIN_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Mycorrhizal Fungi (min)',\r\n content: 'Value: {expression/MF_CL_MIN_eq} eq'\r\n };\r\n } else if (layerName === 'Mychorrhizal Fungi (mid)') {\r\n return {\r\n expressionInfos: [{\r\n name: \"MF_CL_MID\",\r\n expression: \"Text(Round($feature.MF_CL_MID,1),'#,###.0')\"\r\n }],\r\n title: 'Mycorrhizal Fungi (mid)',\r\n content: 'Value: {expression/MF_CL_MID} kg'\r\n };\r\n } else if (layerName === 'Mychorrhizal Fungi (mid) eq') {\r\n return {\r\n expressionInfos: [{\r\n name: \"MF_CL_MID_eq\",\r\n expression: \"Text(Round($feature.MF_CL_MID_eq,1),'#,###.0')\"\r\n }],\r\n title: 'Mycorrhizal Fungi (mid)',\r\n content: 'Value: {expression/MF_CL_MID_eq} eq'\r\n };\r\n } else if (layerName.includes('Herbaceous Species Richness') && layerName.includes('plot') && layerName.includes('eq')) {\r\n return {\r\n expressionInfos: [{\r\n name: \"CLN_pt_eq\",\r\n expression: \"Text(Round($feature.CLN_pt_eq,1),'#,###.0')\"\r\n }],\r\n title: layerName,\r\n content: 'Value: {expression/CLN_pt_eq} eq'\r\n };\r\n} else if (layerName.includes('Herbaceous Species Richness') && layerName.includes('plot') && layerName.includes('kg')) {\r\n return {\r\n expressionInfos: [{\r\n name: \"CLN_pt\",\r\n expression: \"Text(Round($feature.CLN_pt,1),'#,###.0')\"\r\n }],\r\n title: layerName,\r\n content: 'Value: {expression/CLN_pt} kg'\r\n };\r\n } else if (layerName.includes('Herbaceous Species Richness') && layerName.includes('Ecoregion') && layerName.includes('eq')) {\r\n return {\r\n expressionInfos: [{\r\n name: \"Pixel_Value\",\r\n expression: \"Text(Round($feature['Pixel Value'],1),'#,###.0')\"\r\n }],\r\n title: layerName,\r\n content: 'Value: {expression/Pixel_Value} eq'\r\n };\r\n } else if (layerName.includes('Herbaceous Species Richness') && layerName.includes('Ecoregion') && layerName.includes('kg')) {\r\n return {\r\n expressionInfos: [{\r\n name: \"Pixel_Value\",\r\n expression: \"Text(Round($feature['Pixel Value'],1),'#,###.0')\"\r\n }],\r\n title: layerName,\r\n content: 'Value: {expression/Pixel_Value} kg'\r\n };\r\n\r\n // } else if (layerName === 'Herbaceous Species Richness (Closed Canopy) eq') {\r\n // return {\r\n // title: 'Herbaceous Species Richness - Closed Canopy (plot)',\r\n // content: 'Value: {CLN_pt_eq:NumberFormat(places:1)} eq'\r\n // };\r\n // } else if (layerName === 'Herbaceous Species Richness (Open Canopy) eq') {\r\n // return {\r\n // title: 'Herbaceous Species Richness - Open Canopy (plot)',\r\n // content: 'Value: {CLN_pt_eq:NumberFormat(places:1)} eq'\r\n // };\r\n //Herbaceous Species Richness Plot\r\n } else if (layerName.includes('hsrpt') ) {\r\n const canopyType = layerName.includes('(open)') ? ' - Open Canopy (plot)' : ' - Closed Canopy (plot)';\r\n //const value=feature.attributes.value;\r\n console.log(feature.attributes.value);\r\n\r\n if (feature.attributes.value.includes('kg')){\r\n field=feature.attributes.value;\r\n return {\r\n expressionInfos: [{\r\n name: \"val\",\r\n expression: \"Text(Round($feature.\" + field + \",1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Species Richness' + canopyType,\r\n content: `Value: {expression/val} kg`\r\n };\r\n } else {\r\n field=feature.attributes.value;\r\n return {\r\n expressionInfos: [{\r\n name: \"val\",\r\n expression: \"Text(Round($feature.\" + field + \",1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Species Richness' + canopyType,\r\n content: `Value: {expression/val} eq`\r\n };\r\n }\r\n \r\n //Herbaceous Species Richness Ecoregion\r\n } else if (layerName.includes('hsrer') ) {\r\n const canopyType = layerName.includes('(Ecoregion)') ? ' - Open Canopy (Ecoregion)' : ' - Closed Canopy (Ecoregion)';\r\n if (feature.attributes.value.includes('kg')){\r\n field=feature.attributes.value;\r\n return {\r\n expressionInfos: [{\r\n name: \"val\",\r\n expression: \"Text(Round($feature.\" + field + \",1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Species Richness' + canopyType,\r\n content: `Value: {expression/val} kg`\r\n };\r\n } else {\r\n field=feature.attributes.value;\r\n return {\r\n expressionInfos: [{\r\n name: \"val\",\r\n expression: \"Text(Round($feature.\" + field + \",1),'#,###.0')\"\r\n }],\r\n title: 'Herbaceous Species Richness' + canopyType,\r\n content: `Value: {expression/val} eq`\r\n };\r\n }\r\n } else if (layerName.includes('SurfaceWater')) {\r\n field=feature.attributes.value;\r\n return {\r\n expressionInfos: [{\r\n name: \"val\",\r\n expression: \"Text(Round($feature.\" + field + \",1),'#,###.0')\"\r\n }],\r\n title: 'Surface Water Exceedance',\r\n content: `Value: {expression/val} eq`\r\n };\r\n } else {\r\n return {\r\n title: 'Blank',\r\n content: 'no matching layer name'\r\n };\r\n }\r\n\r\n};\r\n","import IdentifyTask from '@arcgis/core/tasks/IdentifyTask';\r\nimport ImageIdentifyTask from '@arcgis/core/tasks/ImageIdentifyTask';\r\nimport IdentifyParameters from '@arcgis/core/tasks/support/IdentifyParameters';\r\nimport ImageIdentifyParameters from '@arcgis/core/tasks/support/ImageIdentifyParameters';\r\nimport Graphic from '@arcgis/core/Graphic';\r\nimport Polygon from '@arcgis/core/geometry/Polygon';\r\nimport SimpleFillSymbol from '@arcgis/core/symbols/SimpleFillSymbol';\r\nimport { getPopupTemplate } from 'js/components/popup/popupTemplate';\r\n\r\nexport const executeIdentifyTask = (map, view, event) => {\r\n const identifyTasks = [];\r\n const imageServiceIdentifyTasks = [];\r\n const allIdentifyTasks = [];\r\n let filteredLayer;\r\n let swLayer;\r\n let herbsrLayer;\r\n\r\n window.mapview = view;\r\n\r\n console.log('Grabbing Popups');\r\n console.time('Popups took: ');\r\n\r\n view.graphics.items = [];\r\n\r\n map.layers.items.forEach(layer => {\r\n if (layer.visible) {\r\n\r\n const url = layer.url;\r\n if (url.toLowerCase().includes('mapserver')) {\r\n // Create identify task for the specified map service\r\n const identifyTask = new IdentifyTask(url);\r\n // Set the parameters for the Identify\r\n const params = new IdentifyParameters();\r\n\r\n // If there are sublayers then add them to the layerIds to process\r\n if (layer.sublayers) {\r\n const sublayers = layer.sublayers.items\r\n .filter(sublayer => sublayer.visible)\r\n .map(sublayer => sublayer.id);\r\n params.layerIds = sublayers;\r\n }\r\n if (layer.id === 'exceedance-sw') {\r\n swLayer = layer.sublayers.items.filter(\r\n sublayer => sublayer.visible\r\n )[0];\r\n }\r\n if (layer.id === 'exceedance-herbsr') {\r\n herbsrLayer = layer.sublayers.items.filter(\r\n sublayer => sublayer.visible\r\n )[0];\r\n }\r\n params.tolerance = 3;\r\n params.layerOption = 'visible';\r\n params.width = view.width;\r\n params.height = view.height;\r\n params.geometry = event.mapPoint;\r\n params.mapExtent = view.extent;\r\n params.returnGeometry = true;\r\n params.geometryPrecision = 0;\r\n\r\n identifyTasks.push(identifyTask.execute(params));\r\n } else if (url.toLowerCase().includes('imageserver')) {\r\n\r\n // Create image service identify task for the specified map service\r\n const imageServiceIdentifyTask = new ImageIdentifyTask(url);\r\n // Set the parameters for the task\r\n const params = new ImageIdentifyParameters();\r\n filteredLayer = map.layers.items.filter(\r\n item =>\r\n (item.visible && item.id === 'deposition') ||\r\n item.id === 'exceedance'\r\n )[0];\r\n\r\n //Make sure the mosaic rule has the definitionExpression\r\n if (filteredLayer.definitionExpression !== \"\"){\r\n filteredLayer.mosaicRule.where=filteredLayer.definitionExpression;\r\n }\r\n\r\n params.geometry = event.mapPoint;\r\n params.mosaicRule = filteredLayer.mosaicRule;\r\n params.renderingRule = filteredLayer.renderingRule;\r\n\r\n imageServiceIdentifyTasks.push(\r\n imageServiceIdentifyTask.execute(params)\r\n );\r\n }\r\n }\r\n });\r\n\r\n if (identifyTasks.length > 0) {\r\n const identifyTasksPromise = new Promise((resolve, reject) => {\r\n Promise.all(identifyTasks).then(responses => {\r\n const features = [];\r\n responses.forEach(response => {\r\n\r\n const results = response.results;\r\n results.forEach(result => {\r\n const feature = result.feature;\r\n const layerName = result.layerName;\r\n let value = null;\r\n \r\n if (swLayer) {\r\n value = swLayer.renderer.field;\r\n } else if (herbsrLayer){\r\n value = herbsrLayer.renderer.field;\r\n }\r\n\r\n if (feature.attributes['Pixel Value'] !== 'NoData') {\r\n\r\n feature.attributes.layerName = layerName;\r\n feature.attributes.value = value;\r\n\r\n feature.graphic = new Graphic();\r\n feature.popupTemplate = getPopupTemplate(layerName, feature);\r\n\r\n const polygon = new Polygon({\r\n rings: feature.geometry.rings,\r\n spatialReference: feature.geometry.spatialReference\r\n });\r\n\r\n const fillSymbol = new SimpleFillSymbol({\r\n color: [0, 0, 0, 0],\r\n outline: {\r\n color: [44, 129, 221],\r\n width: 2\r\n }\r\n });\r\n feature.graphic.geometry = polygon;\r\n feature.graphic.symbol = fillSymbol;\r\n features.push(feature);\r\n }\r\n\r\n });\r\n });\r\n resolve(features);\r\n });\r\n });\r\n allIdentifyTasks.push(identifyTasksPromise);\r\n }\r\n\r\n if (imageServiceIdentifyTasks.length > 0) {\r\n const imageIdentifyTasksPromise = new Promise((resolve, reject) => {\r\n Promise.all(imageServiceIdentifyTasks).then(responses => {\r\n const graphics = [];\r\n\r\n if (responses[0].properties.Values.length !== 0 && !responses[0].properties.Values[0].toLowerCase().includes('nodata')) {\r\n responses.forEach(response => {\r\n if (!response.properties.Values[0].toLowerCase().includes('data')) {\r\n const title =\r\n filteredLayer.id.charAt(0).toUpperCase() +\r\n filteredLayer.id.slice(1);\r\n\r\n var unit = \"\";\r\n if (filteredLayer.renderingRule.functionName.includes('eq')){\r\n unit='eq';\r\n }else if (filteredLayer.renderingRule.functionName.includes('Proportion')){\r\n unit=\"\";\r\n\r\n } else{\r\n unit=\"kg\";\r\n }\r\n // const unit = filteredLayer.renderingRule.functionName.includes(\r\n // 'eq'\r\n // )\r\n // ? 'eq'\r\n // : 'kg';\r\n const graphic = new Graphic();\r\n graphic.attributes = {\r\n value: response.properties.Values[0]\r\n };\r\n graphic.popupTemplate = {\r\n expressionInfos: [{\r\n name: \"value\",\r\n expression: \"Text(Round($feature.value,1),'#,###.0')\"\r\n }],\r\n title: title,\r\n content: 'Value: {expression/value} ' + unit\r\n };\r\n graphics.push(graphic);\r\n }\r\n });\r\n }\r\n resolve(graphics);\r\n });\r\n });\r\n allIdentifyTasks.push(imageIdentifyTasksPromise);\r\n }\r\n Promise.all(allIdentifyTasks).then(results => {\r\n console.timeEnd('Popups took: ');\r\n const features =\r\n results.length > 1 ? [...results[1], ...results[0]] : results[0];\r\n view.popup.id = 'cl-mapper';\r\n if (features && features.length > 0) {\r\n view.popup.open({\r\n features,\r\n location: event.mapPoint\r\n });\r\n }\r\n }).catch(err => console.log('Error: ', err));\r\n};\r\n","import { mapOptions, printURL, viewOptions } from \"js/config/config\";\r\nimport EsriMap from \"@arcgis/core/Map\";\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport { store } from \"js/store\";\r\nimport ClassBreaksRenderer from \"@arcgis/core/renderers/ClassBreaksRenderer\";\r\nimport SimpleMarkerSymbol from \"@arcgis/core/symbols/SimpleMarkerSymbol\";\r\nimport { viewCreated, setTitle } from \"js/actions/mapActions\";\r\nimport { addLayers, addLegend } from \"js/utils/mapStartUpUtils\";\r\nimport { getLayerID, clTotal } from \"js/config/CriticalLoadsOptions\";\r\nimport {\r\n\tdep_models,\r\n\tdep_depositionInfo,\r\n\tdep_rcpInfo,\r\n} from \"js/config/DepositionOptions\";\r\nimport {\r\n\tgetSWLayerID,\r\n\tacidification,\r\n\tecosystem,\r\n\tex_models,\r\n\tex_depositionInfo,\r\n\tex_rcpInfo,\r\n\tgetHerbSRLayerID,\r\n} from \"js/config/ExceedanceOptions\";\r\nimport RasterFunction from \"@arcgis/core/layers/support/RasterFunction\";\r\nimport { executeIdentifyTask } from \"js/utils/IdentifyTask\";\r\nimport PrintTask from \"@arcgis/core/tasks/PrintTask\";\r\nimport PrintTemplate from \"@arcgis/core/tasks/support/PrintTemplate\";\r\nimport PrintParameters from \"@arcgis/core/tasks/support/PrintParameters\";\r\nimport Zoom from \"@arcgis/core/widgets/Zoom\";\r\n// import * as watchUtils from \"@arcgis/core/core/watchUtils\";\r\n\r\n// import { ContactsOutlined } from \"@material-ui/icons\";\r\n\r\nexport default class MapsController {\r\n\tmaps = [];\r\n\tmapViews = [];\r\n\tlegend=null;\r\n\t\r\n\r\n\tconstructor(extent) {\r\n\t\tthis.maps = [\r\n\t\t\tnew EsriMap(mapOptions),\r\n\t\t\tnew EsriMap(mapOptions),\r\n\t\t\tnew EsriMap(mapOptions),\r\n\t\t\tnew EsriMap(mapOptions),\r\n\t\t];\r\n\t\tthis.maps.forEach((map, index) => {\r\n\t\t\tlet view = new MapView({\r\n\t\t\t\tcontainer: \"mapView\" + index,\r\n\t\t\t\tmap: map,\r\n\t\t\t\t...viewOptions,\r\n\t\t\t});\r\n\t\t\tview.when(() => {\r\n\t\t\t\tthis.mapViews[index] = view;\r\n\r\n\t\t\t\taddLayers(map);\r\n\r\n\t\t\t\tthis.legend=addLegend(view, map, index);\r\n\r\n\t\t\t\t// var self=this;\r\n\t\t\t\t// watchUtils.when(this.legend, \"activeLayerInfos.length\", function(){\r\n\t\t\t\t// \tself.reorderLegend();\r\n\t\t\t\t// });\r\n\t\t\t\t\r\n\t\t\t\tview.on(\"click\", (event) => {\r\n\t\t\t\t\texecuteIdentifyTask(map, view, event);\r\n\t\t\t\t});\r\n\t\t\t\tview.on(\"mouse-wheel\", (evt) => {\r\n\t\t\t\t\tevt.stopPropagation();\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Add Zoom Widget\r\n\t\t\t\tconst zoomWidget = new Zoom({\r\n\t\t\t\t\tview: view,\r\n\t\t\t\t});\r\n\t\t\t\tview.ui.add(zoomWidget, \"top-right\");\r\n\r\n\t\t\t\tstore.dispatch(viewCreated(index));\r\n\r\n\t\t\t\tif (extent && extent[index]) {\r\n\t\t\t\t\tconst latitude = extent[index].latitude;\r\n\t\t\t\t\tconst longitude = extent[index].longitude;\r\n\t\t\t\t\tconst zoom = extent[index].zoom;\r\n\r\n\t\t\t\t\tview.goTo({\r\n\t\t\t\t\t\tcenter: [longitude, latitude],\r\n\t\t\t\t\t\tzoom: zoom,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tview.popup.on(\"click\", function (event) {\r\n\t\t\t\t\tconst closeNode =\r\n\t\t\t\t\t\tdocument.getElementsByClassName(\"esri-icon-close\")[index];\r\n\t\t\t\t\tif (event.target === closeNode) {\r\n\t\t\t\t\t\tview.graphics.items = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tview.popup.watch(\r\n\t\t\t\t\t\"selectedFeatureIndex\",\r\n\t\t\t\t\tfunction (newValue, oldValue, property, popup) {\r\n\t\t\t\t\t\tview.graphics.items = [];\r\n\t\t\t\t\t\tif (popup.features[newValue] && popup.features[newValue].graphic) {\r\n\t\t\t\t\t\t\tview.graphics.add(popup.features[newValue].graphic);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tview.goTo({\r\n\t\t\t\t\t\tcenter: viewOptions.center,\r\n\t\t\t\t\t\tzoom: viewOptions.zoom,\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 1000);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tupdateVisibility = (data, mapType, index) => {\r\n\t\t// If mapviews is not ready then don't do anything\r\n\t\tif (!this.mapViews[index]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// Grab active map\r\n\t\tconst map = this.maps[index];\r\n\t\tlet layer;\r\n\t\tif (mapType === \"exceedance\" && data.acidification === \"aquatic\") {\r\n\t\t\tmapType += \"-sw\";\r\n\t\t} else if (\r\n\t\t\tmapType === \"exceedance\" &&\r\n\t\t\tdata.acidification === \"terrestrial\" &&\r\n\t\t\tdata.ecosystem &&\r\n\t\t\tdata.ecosystem.includes(\"hsrpt\")\r\n\t\t) {\r\n\t\t\tmapType += \"-herbsr\";\r\n\t\t}\r\n\t\tconst overlayLayer = map.findLayerById(\"overlays\");\r\n\t\t// Grab the correct layer and turn other layers off.\r\n\t\tmap.layers.items.forEach((item) => {\r\n\t\t\tif (item.id === mapType) {\r\n\t\t\t\tlayer = item;\r\n\t\t\t} else {\r\n\t\t\t\titem.visible = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// Toggle correct overlay layers\r\n\t\tconsole.log(\"data.overlay:\");\r\n\t\tconsole.log(data.overlay);\r\n\t\tthis.processOverlays(data.overlay, overlayLayer);\r\n\t\t// Toggle correct basemap\r\n\t\tthis.updateBaseMap(index, data.basemap);\r\n\t\t// Do Critical Loads toggles!!\r\n\t\tconsole.log(\"mapType:\");\r\n\t\tconsole.log(mapType);\r\n\t\tif (mapType === \"criticalLoads\") {\r\n\t\t\tthis.processCriticalLoads(data, layer);\r\n\t\t} else if (mapType === \"deposition\") {\r\n\t\t\tthis.processDeposition(data, layer);\r\n\t\t} else if (mapType === \"exceedance\") {\r\n\t\t\tthis.processExceedance(data, layer);\r\n\t\t} else if (mapType === \"exceedance-sw\") {\r\n\t\t\tthis.processSWExceedance(data, layer);\r\n\t\t} else if (mapType === \"exceedance-herbsr\") {\r\n\t\t\tthis.processHerbSRExceedance(data, layer);\r\n\t\t}\r\n\t};\r\n\r\n\tprocessOverlays = (data, layer) => {\r\n\t\tif (!layer.visible) {\r\n\t\t\tlayer.visible = true;\r\n\t\t}\r\n\t\tlayer.sublayers.items.forEach((item) => {\r\n\t\t\tif (data.indexOf(item.id) > -1) {\r\n\t\t\t\titem.visible = true;\r\n\t\t\t} else {\r\n\t\t\t\titem.visible = false;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t// reorderLegend = () => {\r\n\t// \tlet legendItems=this.legend.activeLayerInfos.items;\r\n\t// \tif (legendItems.length>1){\r\n\t// \t\t//Swap the Overlays to the last item in legend if it is first\r\n\t// \t\tif (legendItems[0].title==='Overlays'){\r\n\t// \t\t\tlet legendItemsOverlays=legendItems[0];\r\n\t// \t\t\tlegendItems[0]=legendItems[1];\r\n\t// \t\t\tlegendItems[1]=legendItemsOverlays;\r\n\t// \t\t\tthis.legend.activeLayerInfos.items= legendItems;\r\n\t\t\t\t\r\n\t// \t\t}\r\n\t// \t}\r\n\t// };\r\n\r\n\tprocessCriticalLoads = (data, layer) => {\r\n\t\tconst criticalLoad = getLayerID(data.criticalLoad, data.unit);\r\n\t\tconst criticalLoadsIndex = clTotal.findIndex(\r\n\t\t\t(load) => load.value === data.criticalLoad\r\n\t\t);\r\n\r\n\t\tif (criticalLoadsIndex > -1) {\r\n\t\t\tconst clObj = clTotal[criticalLoadsIndex];\r\n\r\n\t\t\tlet title = `${clObj.category} ${clObj.layer} ${clObj.description} for ${clObj.name} (${data.unit}/ha-yr)`;\r\n\t\t\tif (clObj.disable === data.unit) {\r\n\t\t\t\ttitle = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t}\r\n\t\t\tlayer.title = title;\r\n\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\tlayer.visible = true;\r\n\t\t} else if (layer.title !== \"\") {\r\n\t\t\tlayer.title = \"\";\r\n\t\t\tstore.dispatch(setTitle(\"\"));\r\n\t\t}\r\n\t\tlayer.sublayers.items.forEach((item) => {\r\n\t\t\tif (item.id === criticalLoad) {\r\n\t\t\t\titem.visible = true;\r\n\t\t\t} else {\r\n\t\t\t\titem.visible = false;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tprocessDeposition = (data, layer) => {\r\n\t\tconsole.log(\"legend:\");\r\n\t\tconsole.log(this.legend);\r\n\t\tif (data.model && data.deposition && data.unit && data.year) {\r\n\t\t\tlet name = \"\";\r\n\t\t\tif (data.deposition === \"wetdryn\" || data.deposition === \"oxredn\") {\r\n\t\t\t\tname = \"Proportions\";\r\n\t\t\t\tdata.unit = \"pp\";\r\n\t\t\t} else {\r\n\t\t\t\tname = `dep_${data.unit}ha`;\r\n\t\t\t}\r\n\t\t\tconst rastFunc = new RasterFunction({\r\n\t\t\t\tfunctionName: name,\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tlayer.renderingRule = rastFunc;\r\n\t\t\tconst modelIndex = dep_models.findIndex(\r\n\t\t\t\t(model) => model.value === data.model\r\n\t\t\t);\r\n\t\t\tconst model = dep_models[modelIndex].model;\r\n\t\t\tlet queryString = \"\";\r\n\t\t\tlet prefix = \"\";\r\n\t\t\tlet yearRange = data.year;\r\n\t\t\tif (model === \"TDEP\" || model === \"CMAQ\") {\r\n\t\t\t\tqueryString = `Dep_3yr_${data.model}_${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\tprefix = \"3-Yr Average\";\r\n\t\t\t\tyearRange = `${data.year - 2}\\u2013${data.year}`;\r\n\t\t\t} else if (model === \"CMIP5\") {\r\n\t\t\t\tqueryString = data.rcp\r\n\t\t\t\t\t? `Dep_10yr_${data.model}${data.rcp}_${data.deposition}_${data.unit}_${data.year}`\r\n\t\t\t\t\t: `Dep_10yr_${data.model}_${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\tprefix = \"10-Yr Average\";\r\n\t\t\t\tyearRange = `${data.year - 9}\\u2013${data.year}`;\r\n\t\t\t}\r\n\t\t\tlayer.definitionExpression = `LOWER(Name)=LOWER('${queryString}')`;\r\n\t\t\tconst depIndex = dep_depositionInfo[data.depType].findIndex(\r\n\t\t\t\t(dep) => dep.value === data.deposition\r\n\t\t\t);\r\n\t\t\tconst depLabel = dep_depositionInfo[data.depType][depIndex].label;\r\n\t\t\tlet title = `${prefix} Deposition of ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\tif (data.rcp) {\r\n\t\t\t\tconst rcpIndex = dep_rcpInfo.findIndex((rcp) => rcp.value === data.rcp);\r\n\t\t\t\tconst rcp = dep_rcpInfo[rcpIndex].label;\r\n\t\t\t\ttitle = `${prefix} Deposition of ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t}\r\n\t\t\tif (name === \"Proportions\") {\r\n\t\t\t\ttitle = `${prefix} Deposition of ${depLabel} (${model}, ${yearRange})`;\r\n\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\tconst rcpIndex = dep_rcpInfo.findIndex(\r\n\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst rcp = dep_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\ttitle = `${prefix} Deposition of ${depLabel} (${model}, ${rcp}, ${yearRange})`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (dep_depositionInfo[data.depType][depIndex].disable === data.unit) {\r\n\t\t\t\ttitle = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t}\r\n\t\t\tlayer.title = title;\r\n\t\t\tlayer.visible = true;\r\n\t\t\tstore.dispatch(setTitle(title));\r\n\t\t} else if (layer.title !== \"\") {\r\n\t\t\tlayer.title = \"\";\r\n\t\t\tlayer.visible = false;\r\n\t\t\tstore.dispatch(setTitle(\"\"));\r\n\t\t}\t\t\r\n\t};\r\n\r\n\tprocessExceedance = (data, layer) => {\r\n\t\tif (\r\n\t\t\tdata.ecosystem &&\r\n\t\t\tdata.model &&\r\n\t\t\tdata.deposition &&\r\n\t\t\tdata.unit &&\r\n\t\t\tdata.year\r\n\t\t) {\r\n\t\t\tconst altUnit = data.unit;\r\n\t\t\tconst acidIndex = acidification.findIndex(\r\n\t\t\t\t(acid) => acid.value === data.acidification\r\n\t\t\t);\r\n\t\t\tconst acidDisable =\r\n\t\t\t\tacidIndex !== -1 && acidification[acidIndex].disable === data.unit;\r\n\t\t\tif (acidDisable) {\r\n\t\t\t\tconst title = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t\tlayer.visible = false;\r\n\t\t\t} else {\r\n\t\t\t\tlet name;\r\n\t\t\t\tif (data.deposition === \"wetdryn\" || data.deposition === \"oxredn\") {\r\n\t\t\t\t\tname = \"Proportions\";\r\n\t\t\t\t\tdata.unit = \"pp\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tname = `ex_${data.unit}ha`;\r\n\t\t\t\t}\r\n\t\t\t\tconst rastFunc = new RasterFunction({\r\n\t\t\t\t\tfunctionName: name,\r\n\t\t\t\t});\r\n\t\t\t\tlayer.renderingRule = rastFunc;\r\n\r\n\t\t\t\tconst acid = acidification[acidIndex].name;\r\n\t\t\t\tconst modelIndex = ex_models.findIndex(\r\n\t\t\t\t\t(model) => model.value === data.model\r\n\t\t\t\t);\r\n\t\t\t\tconst model = ex_models[modelIndex].model;\r\n\t\t\t\tconst depIndex = ex_depositionInfo[data.depType].findIndex(\r\n\t\t\t\t\t(dep) => dep.value === data.deposition\r\n\t\t\t\t);\r\n\t\t\t\tconst depLabel = ex_depositionInfo[data.depType][depIndex].label;\r\n\r\n\t\t\t\tlet queryString = \"\";\r\n\t\t\t\tlet prefix = \"\";\r\n\t\t\t\tlet yearRange = data.year;\r\n\r\n\t\t\t\tif (model === \"TDEP\" || model === \"CMAQ\") {\r\n\t\t\t\t\tqueryString = `Ex_3yr_${data.ecosystem}_${data.model}_${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\t\tprefix = \"3-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 2}\\u2013${data.year}`;\r\n\t\t\t\t} else if (model === \"CMIP5\") {\r\n\t\t\t\t\tqueryString = data.rcp\r\n\t\t\t\t\t\t? `Ex_10yr_${data.ecosystem}_${data.model}${data.rcp}_${data.deposition}_${data.unit}_${data.year}`\r\n\t\t\t\t\t\t: `Ex_10yr_${data.ecosystem}_${data.model}_${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\t\tprefix = \"10-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 9}\\u2013${data.year}`;\r\n\t\t\t\t}\r\n\t\t\t\tlayer.definitionExpression = `LOWER(Name)=LOWER('${queryString}')`;\r\n\t\t\t\tif (\r\n\t\t\t\t\tacid === \"Forest Acidification\" &&\r\n\t\t\t\t\tmodel === \"NADP\" &&\r\n\t\t\t\t\tdepLabel === \"Wet Oxidized Inorganic N\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tdata.unit = \"eq-NOx\";\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tacid === \"Forest Acidification\" &&\r\n\t\t\t\t\tmodel === \"NADP\" &&\r\n\t\t\t\t\tdepLabel === \"Wet Reduced Inorganic N\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tdata.unit = \"eq-NHx\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet title = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\tconst rcpIndex = ex_rcpInfo.findIndex(\r\n\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst rcp = ex_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\ttitle = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t}\r\n\t\t\t\tif (data.ecosystem !== null && data.ecosystem !== \"ta\") {\r\n\t\t\t\t\tconst ecoIndex = ecosystem.findIndex(\r\n\t\t\t\t\t\t(eco) => eco.value === data.ecosystem\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst ecoLabel = ecosystem[ecoIndex].label;\r\n\t\t\t\t\tconst ecoSubLabel = ecosystem[ecoIndex].sublabel;\r\n\t\t\t\t\ttitle = `${prefix} Exceedance of ${ecoLabel} ${ecoSubLabel} ${acid} by ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\t\tconst rcpIndex = ex_rcpInfo.findIndex(\r\n\t\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tconst rcp = ex_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\t\ttitle = `${prefix} Exceedance of ${ecoLabel} ${ecoSubLabel} ${acid} by ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (ex_depositionInfo[data.depType][depIndex].disable === data.unit) {\r\n\t\t\t\t\ttitle = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\t}\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tlayer.visible = true;\r\n\t\t\t\tif (title.includes(\"pp/ha-yr\")) {\r\n\t\t\t\t\ttitle = title.replace(\"pp/ha-yr\", `${altUnit}/ha-yr`);\r\n\t\t\t\t}\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t}\r\n\t\t} else if (layer.title !== \"\") {\r\n\t\t\tlayer.title = \"\";\r\n\t\t\tlayer.visible = false;\r\n\t\t\tstore.dispatch(setTitle(\"\"));\r\n\t\t}\r\n\t};\r\n\r\n\tprocessSWExceedance = (data, layer) => {\r\n\t\tif (data.model && data.deposition && data.unit && data.year) {\r\n\t\t\tconst acidIndex = acidification.findIndex(\r\n\t\t\t\t(acid) => acid.value === data.acidification\r\n\t\t\t);\r\n\t\t\tconst acidDisable = acidification[acidIndex].disable === data.unit;\r\n\t\t\tif (acidDisable) {\r\n\t\t\t\tconst title = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t\tlayer.visible = false;\r\n\t\t\t} else {\r\n\t\t\t\tlet search = data.model;\r\n\t\t\t\tif (data.model === \"cmip5\") {\r\n\t\t\t\t\tsearch += data.rcp;\r\n\t\t\t\t}\r\n\t\t\t\tconst swExceedance = getSWLayerID(search);\r\n\t\t\t\tconst queryString = `${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\tlayer.sublayers.forEach((item) => {\r\n\t\t\t\t\tif (item.id === swExceedance) {\r\n\t\t\t\t\t\tconst sublayer = item;\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tdata.deposition !== null &&\r\n\t\t\t\t\t\t\tdata.unit !== null &&\r\n\t\t\t\t\t\t\tdata.year !== null\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tsublayer.renderer = this.generateExceedanceRenderer(queryString, data.unit);\r\n\t\t\t\t\t\t\tsublayer.visible = true;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsublayer.visible = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titem.visible = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst acid = acidification[acidIndex].name;\r\n\t\t\t\tconst modelIndex = ex_models.findIndex(\r\n\t\t\t\t\t(model) => model.value === data.model\r\n\t\t\t\t);\r\n\t\t\t\tconst model = ex_models[modelIndex].model;\r\n\t\t\t\tconst depIndex = ex_depositionInfo[data.depType].findIndex(\r\n\t\t\t\t\t(dep) => dep.value === data.deposition\r\n\t\t\t\t);\r\n\t\t\t\tconst depLabel = ex_depositionInfo[data.depType][depIndex].label;\r\n\t\t\t\tlet prefix = \"\";\r\n\t\t\t\tlet yearRange = data.year;\r\n\t\t\t\tif (model === \"TDEP\" || model === \"CMAQ\") {\r\n\t\t\t\t\tprefix = \"3-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 2}\\u2013${data.year}`;\r\n\t\t\t\t} else if (model === \"CMIP5\") {\r\n\t\t\t\t\tprefix = \"10-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 9}\\u2013${data.year}`;\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tmodel === \"NADP\" &&\r\n\t\t\t\t\tdepLabel === \"Wet Oxidized Inorganic N\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tdata.unit = \"eq-NOx\";\r\n\t\t\t\t} else if (model === \"NADP\" && depLabel === \"Wet Reduced Inorganic N\") {\r\n\t\t\t\t\tdata.unit = \"eq-NHx\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet title = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\tconst rcpIndex = ex_rcpInfo.findIndex(\r\n\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst rcp = ex_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\ttitle = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t}\r\n\t\t\t\tif (ex_depositionInfo[data.depType][depIndex].disable === data.unit) {\r\n\t\t\t\t\ttitle = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\t}\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tlayer.visible = true;\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t}\r\n\t\t} else if (layer.title !== \"\") {\r\n\t\t\tlayer.title = \"\";\r\n\t\t\tlayer.visible = false;\r\n\t\t\tstore.dispatch(setTitle(\"\"));\r\n\t\t}\r\n\t};\r\n\r\n\tprocessHerbSRExceedance = (data, layer) => {\r\n\t\tif (data.model && data.deposition && data.unit && data.year) {\r\n\t\t\tconst acidIndex = acidification.findIndex(\r\n\t\t\t\t(acid) => acid.value === data.acidification\r\n\t\t\t);\r\n\t\t\tconst acidDisable = acidification[acidIndex].disable === data.unit;\r\n\t\t\tif (acidDisable) {\r\n\t\t\t\tconst title = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t\tlayer.visible = false;\r\n\t\t\t} else {\r\n\t\t\t\tlet search = data.model;\r\n\t\t\t\tif (data.model === \"cmip5\") {\r\n\t\t\t\t\tsearch += data.rcp;\r\n\t\t\t\t}\r\n\t\t\t\tif (data.ecosystem === \"hsrptoc\") {\r\n\t\t\t\t\tsearch += \"-oc\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsearch += \"-cc\";\r\n\t\t\t\t}\r\n\t\t\t\tconst herbSRExceedance = getHerbSRLayerID(search);\r\n\t\t\t\tconst queryString = `${data.deposition}_${data.unit}_${data.year}`;\r\n\t\t\t\tlayer.sublayers.forEach((item) => {\r\n\t\t\t\t\tif (item.id === herbSRExceedance) {\r\n\t\t\t\t\t\tlet sublayer = item;\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tdata.deposition !== null &&\r\n\t\t\t\t\t\t\tdata.unit !== null &&\r\n\t\t\t\t\t\t\tdata.year !== null\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tsublayer.renderer = this.generateExceedanceRenderer(\r\n\t\t\t\t\t\t\t\tqueryString,\r\n\t\t\t\t\t\t\t\tdata.unit\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tsublayer.visible = true;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsublayer.visible = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titem.visible = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst acid = acidification[acidIndex].name;\r\n\t\t\t\tconst modelIndex = ex_models.findIndex(\r\n\t\t\t\t\t(model) => model.value === data.model\r\n\t\t\t\t);\r\n\t\t\t\tconst model = ex_models[modelIndex].model;\r\n\t\t\t\tconst depIndex = ex_depositionInfo[data.depType].findIndex(\r\n\t\t\t\t\t(dep) => dep.value === data.deposition\r\n\t\t\t\t);\r\n\t\t\t\tconst depLabel = ex_depositionInfo[data.depType][depIndex].label;\r\n\r\n\t\t\t\tlet prefix = \"\";\r\n\t\t\t\tlet yearRange = data.year;\r\n\t\t\t\tif (model === \"TDEP\" || model === \"CMAQ\") {\r\n\t\t\t\t\tprefix = \"3-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 2}\\u2013${data.year}`;\r\n\t\t\t\t} else if (model === \"CMIP5\") {\r\n\t\t\t\t\tprefix = \"10-Yr Average\";\r\n\t\t\t\t\tyearRange = `${data.year - 9}\\u2013${data.year}`;\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tacid === \"Forest Acidification\" &&\r\n\t\t\t\t\tmodel === \"NADP\" &&\r\n\t\t\t\t\tdepLabel === \"Wet Oxidized Inorganic N\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tdata.unit = \"eq-NOx\";\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tacid === \"Forest Acidification\" &&\r\n\t\t\t\t\tmodel === \"NADP\" &&\r\n\t\t\t\t\tdepLabel === \"Wet Reduced Inorganic N\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tdata.unit = \"eq-NHx\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet title = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\tconst rcpIndex = ex_rcpInfo.findIndex(\r\n\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst rcp = ex_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\ttitle = `${prefix} Exceedance of ${acid} by ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t}\r\n\t\t\t\tif (data.ecosystem !== null && data.ecosystem !== \"ta\") {\r\n\t\t\t\t\tconst ecoIndex = ecosystem.findIndex(\r\n\t\t\t\t\t\t(eco) => eco.value === data.ecosystem\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst ecoLabel = ecosystem[ecoIndex].label;\r\n\t\t\t\t\tconst ecoSubLabel = ecosystem[ecoIndex].sublabel;\r\n\t\t\t\t\ttitle = `${prefix} Exceedance of ${ecoLabel} ${ecoSubLabel} ${acid} by ${depLabel} (${model}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t\tif (data.rcp) {\r\n\t\t\t\t\t\tconst rcpIndex = ex_rcpInfo.findIndex(\r\n\t\t\t\t\t\t\t(rcp) => rcp.value === data.rcp\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tconst rcp = ex_rcpInfo[rcpIndex].label;\r\n\t\t\t\t\t\ttitle = `${prefix} Exceedance of ${ecoLabel} ${ecoSubLabel} ${acid} by ${depLabel} (${model}, ${rcp}, ${yearRange}, ${data.unit}/ha-yr)`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (ex_depositionInfo[data.depType][depIndex].disable === data.unit) {\r\n\t\t\t\t\ttitle = `The unit ${data.unit}/ha-yr is not available for this selection`;\r\n\t\t\t\t}\r\n\t\t\t\tlayer.title = title;\r\n\t\t\t\tlayer.visible = true;\r\n\t\t\t\tif (title.includes(\"pp/ha-yr\")) {\r\n\t\t\t\t\ttitle = title.replace(\"pp/ha-yr\", `${data.unit}/ha-yr`);\r\n\t\t\t\t}\r\n\t\t\t\tstore.dispatch(setTitle(title));\r\n\t\t\t}\r\n\t\t} else if (layer.title !== \"\") {\r\n\t\t\tlayer.title = \"\";\r\n\t\t\tlayer.visible = false;\r\n\t\t\tstore.dispatch(setTitle(\"\"));\r\n\t\t}\r\n\t};\r\n\r\n\tsyncLocations = (index) => {\r\n\t\tthis.mapViews.forEach((view) => {\r\n\t\t\tview.center = this.mapViews[index].center;\r\n\t\t\tview.zoom = this.mapViews[index].zoom;\r\n\t\t});\r\n\t};\r\n\r\n\tsyncData = (data, mapType) => {\r\n\t\tlet maxIndex = 0;\r\n\t\tthis.mapViews.forEach((view, index) => {\r\n\t\t\tmaxIndex = index;\r\n\t\t\tthis.updateVisibility(data, mapType, index);\r\n\t\t});\r\n\t\treturn maxIndex;\r\n\t};\r\n\r\n\tsetOpacity = (opacity, index, mapType) => {\r\n\t\tconst map = this.maps[index];\r\n\t\tconst layer = map.findLayerById(mapType);\r\n\t\tlayer.opacity = opacity;\r\n\t};\r\n\r\n\tupdateBaseMap = (index, basemap) => {\r\n\t\tthis.maps[index].basemap = basemap;\r\n\t};\r\n\r\n\tgenerateExceedanceRenderer = (field, unit) => {\r\n\t\tconst generateSymbol = (color) => {\r\n\t\t\treturn new SimpleMarkerSymbol({\r\n\t\t\t\tstyle: \"circle\",\r\n\t\t\t\tcolor: color,\r\n\t\t\t\tsize: \"6px\", // pixels\r\n\t\t\t\toutline: {\r\n\t\t\t\t\t// autocasts as new SimpleLineSymbol()\r\n\t\t\t\t\tcolor: [255, 255, 255],\r\n\t\t\t\t\twidth: 0, // points\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t};\r\n\t\tlet result;\r\n\t\tif (unit === \"kg\") {\r\n\t\t\tresult = new ClassBreaksRenderer({\r\n\t\t\t\tfield: field,\r\n\t\t\t\tclassBreakInfos: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000000,\r\n\t\t\t\t\t\tmaxValue: -15,\r\n\t\t\t\t\t\tsymbol: generateSymbol([37, 52, 148]),\r\n\t\t\t\t\t\tlabel: \"< -15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -15,\r\n\t\t\t\t\t\tmaxValue: -5,\r\n\t\t\t\t\t\tsymbol: generateSymbol([44, 127, 184]),\r\n\t\t\t\t\t\tlabel: \"-14.9 - -5.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -5,\r\n\t\t\t\t\t\tmaxValue: -1,\r\n\t\t\t\t\t\tsymbol: generateSymbol([64, 182, 195]),\r\n\t\t\t\t\t\tlabel: \"-4.9 - -1.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1,\r\n\t\t\t\t\t\tmaxValue: 0,\r\n\t\t\t\t\t\tsymbol: generateSymbol([161, 218, 180]),\r\n\t\t\t\t\t\tlabel: \"-0.99 - 0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 0,\r\n\t\t\t\t\t\tmaxValue: 1,\r\n\t\t\t\t\t\tsymbol: generateSymbol([255, 255, 178]),\r\n\t\t\t\t\t\tlabel: \"0 - 1.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 1,\r\n\t\t\t\t\t\tmaxValue: 5,\r\n\t\t\t\t\t\tsymbol: generateSymbol([253, 141, 60]),\r\n\t\t\t\t\t\tlabel: \"1.1 - 5.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 5,\r\n\t\t\t\t\t\tmaxValue: 15,\r\n\t\t\t\t\t\tsymbol: generateSymbol([240, 59, 32]),\r\n\t\t\t\t\t\tlabel: \"5.1 - 15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 15,\r\n\t\t\t\t\t\tmaxValue: 1000000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([189, 0, 38]),\r\n\t\t\t\t\t\tlabel: \"> 15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\t/* classBreakInfos: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 15,\r\n\t\t\t\t\t\tmaxValue: 1000000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([189, 0, 38]),\r\n\t\t\t\t\t\tlabel: \"> 15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 5,\r\n\t\t\t\t\t\tmaxValue: 15,\r\n\t\t\t\t\t\tsymbol: generateSymbol([240, 59, 32]),\r\n\t\t\t\t\t\tlabel: \"5.1 - 15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 1,\r\n\t\t\t\t\t\tmaxValue: 5,\r\n\t\t\t\t\t\tsymbol: generateSymbol([253, 141, 60]),\r\n\t\t\t\t\t\tlabel: \"1.1 - 5.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 0,\r\n\t\t\t\t\t\tmaxValue: 1,\r\n\t\t\t\t\t\tsymbol: generateSymbol([255, 255, 178]),\r\n\t\t\t\t\t\tlabel: \"0 - 1.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1,\r\n\t\t\t\t\t\tmaxValue: 0,\r\n\t\t\t\t\t\tsymbol: generateSymbol([161, 218, 180]),\r\n\t\t\t\t\t\tlabel: \"-0.99 - 0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -5,\r\n\t\t\t\t\t\tmaxValue: -1,\r\n\t\t\t\t\t\tsymbol: generateSymbol([64, 182, 195]),\r\n\t\t\t\t\t\tlabel: \"-4.9 - -1.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -15,\r\n\t\t\t\t\t\tmaxValue: -5,\r\n\t\t\t\t\t\tsymbol: generateSymbol([44, 127, 184]),\r\n\t\t\t\t\t\tlabel: \"-14.9 - -5.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000000,\r\n\t\t\t\t\t\tmaxValue: -15,\r\n\t\t\t\t\t\tsymbol: generateSymbol([37, 52, 148]),\r\n\t\t\t\t\t\tlabel: \"< -15.0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t], */\r\n\t\t\t});\r\n\t\t}\r\n\t\telse { \r\n\t\t\tresult = new ClassBreaksRenderer({\r\n\t\t\t\tfield: field,\r\n\t\t\t\tclassBreakInfos: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000000,\r\n\t\t\t\t\t\tmaxValue: -1000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([37, 52, 148]),\r\n\t\t\t\t\t\tlabel: \"< -1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000,\r\n\t\t\t\t\t\tmaxValue: -350,\r\n\t\t\t\t\t\tsymbol: generateSymbol([44, 127, 184]),\r\n\t\t\t\t\t\tlabel: \"-1,000 - -350\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -350,\r\n\t\t\t\t\t\tmaxValue: -70,\r\n\t\t\t\t\t\tsymbol: generateSymbol([64, 182, 195]),\r\n\t\t\t\t\t\tlabel: \"-350 - -70\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -70,\r\n\t\t\t\t\t\tmaxValue: 0,\r\n\t\t\t\t\t\tsymbol: generateSymbol([161, 218, 180]),\r\n\t\t\t\t\t\tlabel: \"-70 - 0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 0,\r\n\t\t\t\t\t\tmaxValue: 70,\r\n\t\t\t\t\t\tsymbol: generateSymbol([255, 255, 178]),\r\n\t\t\t\t\t\tlabel: \"0 - 70\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 70,\r\n\t\t\t\t\t\tmaxValue: 350,\r\n\t\t\t\t\t\tsymbol: generateSymbol([253, 141, 60]),\r\n\t\t\t\t\t\tlabel: \"70 - 350\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 350,\r\n\t\t\t\t\t\tmaxValue: 1000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([240, 59, 32]),\r\n\t\t\t\t\t\tlabel: \"350 - 1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 1000,\r\n\t\t\t\t\t\tmaxValue: 1000000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([189, 0, 38]),\r\n\t\t\t\t\t\tlabel: \"> 1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\t/* classBreakInfos: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 1000,\r\n\t\t\t\t\t\tmaxValue: 1000000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([189, 0, 38]),\r\n\t\t\t\t\t\tlabel: \"> 1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 350,\r\n\t\t\t\t\t\tmaxValue: 1000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([240, 59, 32]),\r\n\t\t\t\t\t\tlabel: \"350 - 1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 70,\r\n\t\t\t\t\t\tmaxValue: 350,\r\n\t\t\t\t\t\tsymbol: generateSymbol([253, 141, 60]),\r\n\t\t\t\t\t\tlabel: \"70 - 350\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: 0,\r\n\t\t\t\t\t\tmaxValue: 70,\r\n\t\t\t\t\t\tsymbol: generateSymbol([255, 255, 178]),\r\n\t\t\t\t\t\tlabel: \"0 - 70\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -70,\r\n\t\t\t\t\t\tmaxValue: 0,\r\n\t\t\t\t\t\tsymbol: generateSymbol([161, 218, 180]),\r\n\t\t\t\t\t\tlabel: \"-70 - 0\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -350,\r\n\t\t\t\t\t\tmaxValue: -70,\r\n\t\t\t\t\t\tsymbol: generateSymbol([64, 182, 195]),\r\n\t\t\t\t\t\tlabel: \"-350 - -70\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000,\r\n\t\t\t\t\t\tmaxValue: -350,\r\n\t\t\t\t\t\tsymbol: generateSymbol([44, 127, 184]),\r\n\t\t\t\t\t\tlabel: \"-1,000 - -350\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tminValue: -1000000,\r\n\t\t\t\t\t\tmaxValue: -1000,\r\n\t\t\t\t\t\tsymbol: generateSymbol([37, 52, 148]),\r\n\t\t\t\t\t\tlabel: \"< -1,000\",\r\n\t\t\t\t\t},\r\n\t\t\t\t], */\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\tprintActive = (index) => {\r\n\t\tconst view = this.mapViews[index];\r\n\r\n\t\tconst printTask = new PrintTask({\r\n\t\t\turl: printURL,\r\n\t\t});\r\n\r\n\t\tconst template = new PrintTemplate({\r\n\t\t\tlayout: \"map-only\",\r\n\t\t\texportOptions: {\r\n\t\t\t\twidth: view.width,\r\n\t\t\t\theight: view.height,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconst params = new PrintParameters({\r\n\t\t\tview: view,\r\n\t\t\ttemplate: template,\r\n\t\t});\r\n\r\n\t\treturn printTask.execute(params);\r\n\t};\r\n\r\n\tprintAll = (layout) => {\r\n\t\tconst printAllPromises = [];\r\n\r\n\t\tfor (let index = 0; index < layout; index++) {\r\n\t\t\tprintAllPromises.push(this.printActive(index));\r\n\t\t}\r\n\r\n\t\treturn printAllPromises;\r\n\t};\r\n\r\n\tshareURL = () => {\r\n\t\tconst extent = [];\r\n\t\tthis.mapViews.forEach((view) => {\r\n\t\t\textent.push({\r\n\t\t\t\tlatitude: view.center.latitude,\r\n\t\t\t\tlongitude: view.center.longitude,\r\n\t\t\t\tzoom: view.zoom,\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn extent;\r\n\t};\r\n}\r\n","import React, { Component } from 'react';\r\nimport Map from 'js/components/Map';\r\nimport DataOptions from 'js/components/dataOptions/DataOptions';\r\nimport Header from 'js/components/header/Header';\r\nimport Footer from 'js/components/footer/Footer';\r\nimport ReportSpinner from 'js/components/shared/ReportSpinner';\r\nimport DownloadSpinner from 'js/components/shared/DownloadSpinner';\r\nimport MapsController from 'js/utils/MapsController.js';\r\nimport _fill from 'lodash/fill';\r\nimport { extentSplit, hrefSplit } from 'js/config/config';\r\n\r\nexport default class MapsContainer extends Component {\r\n\tdisplayName: \"MapsContainer\";\r\n\r\n\tmapsController = {};\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tconst parseLink = window.location.href.split(hrefSplit);\r\n\t\tif (parseLink.length > 1) {\r\n\t\t\tconst parseData = parseLink[1].split(extentSplit);\r\n\t\t\tconst state = JSON.parse(\r\n\t\t\t\tparseData[0].replace(/%22/g, '\"').replace(/%20/g, \" \")\r\n\t\t\t);\r\n\t\t\tthis.state = state;\r\n\t\t} else {\r\n\t\t\tthis.state = {\r\n\t\t\t\tactiveView: 0,\r\n\t\t\t\tlayout: 1,\r\n\t\t\t\tmapType: [null, null, null, null],\r\n\t\t\t\tacidification: [null, null, null, null],\r\n\t\t\t\tecosystem: [null, null, null, null],\r\n\t\t\t\tcriticalLoad: [null, null, null, null],\r\n\t\t\t\tdeposition: [null, null, null, null],\r\n\t\t\t\tdepType: [null, null, null, null],\r\n\t\t\t\tmodel: [null, null, null, null],\r\n\t\t\t\trcp: [null, null, null, null],\r\n\t\t\t\tyear: [null, null, null, null],\r\n\t\t\t\tunit: [\"eq\", \"eq\", \"eq\", \"eq\"],\r\n\t\t\t\ttitle: [null, null, null, null],\r\n\t\t\t\ttimeSliderYears: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\tmax: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\tmax: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\tmax: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmin: 0,\r\n\t\t\t\t\t\tmax: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\toverlays: [\r\n\t\t\t\t\t[3, 11, 7, 10, 8, 15, 16, 9, 30],\r\n\t\t\t\t\t[3, 11, 7, 10, 8, 15, 16, 9, 30],\r\n\t\t\t\t\t[3, 11, 7, 10, 8, 15, 16, 9, 30],\r\n\t\t\t\t\t[3, 11, 7, 10, 8, 15, 16, 9, 30],\r\n\t\t\t\t\t//[3, 11, 7, 10, 8, 15, 30],\r\n\t\t\t\t\t//[3, 11, 7, 10, 8, 15, 30],\r\n\t\t\t\t\t//[3, 11, 7, 10, 8, 15, 30],\r\n\t\t\t\t\t//[3, 11, 7, 10, 8, 15, 30],\r\n\t\t\t\t],\r\n\t\t\t\turl: \"https://clmapper.epa.gov\",\r\n\t\t\t\tbasemap: [\"dark-gray\", \"dark-gray\", \"dark-gray\", \"dark-gray\"],\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\t// React lifecycle functions\r\n\tcomponentDidMount() {\r\n\t\tconst parseLink = window.location.href.split(hrefSplit);\r\n\t\tif (parseLink.length > 1) {\r\n\t\t\tconst parseData = parseLink[1].split(extentSplit);\r\n\t\t\tconst extent = JSON.parse(parseData[1].replace(/%22/g, '\"'));\r\n\t\t\tthis.mapsController = new MapsController(extent);\r\n\t\t} else {\r\n\t\t\tthis.mapsController = new MapsController();\r\n\t\t\twindow.mapsController = this.mapsController;\r\n\t\t}\r\n\t}\r\n\r\n componentDidUpdate(prevProps) {\r\n\t\tif (prevProps.title !== this.props.title) {\r\n\t\t\tthis.updateTitle(this.props.title, this.state.activeView);\r\n\t\t}\r\n\t}\r\n\r\n\t// Data related functions\r\n\tupdateAcidification = (newAcidification, index) => {\r\n\t\tconst acidification = this.state.acidification.slice();\r\n\t\tconst criticalLoad = this.state.criticalLoad.slice();\r\n\t\tconst ecosystem = this.state.ecosystem.slice();\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tconst depType = this.state.depType.slice();\r\n\t\tconst model = this.state.model.slice();\r\n\t\tconst rcp = this.state.rcp.slice();\r\n\t\tacidification[index] = newAcidification;\r\n\t\tcriticalLoad[index] = null;\r\n\t\tecosystem[index] = null;\r\n\t\tdeposition[index] = null;\r\n\t\tdepType[index] = null;\r\n\t\tmodel[index] = null;\r\n\t\trcp[index] = null;\r\n\t\tthis.setState({\r\n\t\t\tacidification,\r\n\t\t\tcriticalLoad,\r\n\t\t\tecosystem,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tmodel,\r\n\t\t\trcp,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateEcosystem = (newEcosystem, index) => {\r\n\t\tconst ecosystem = this.state.ecosystem.slice();\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tconst depType = this.state.depType.slice();\r\n\t\tconst model = this.state.model.slice();\r\n\t\tconst rcp = this.state.rcp.slice();\r\n\t\tecosystem[index] = newEcosystem;\r\n\t\tdeposition[index] = null;\r\n\t\tdepType[index] = null;\r\n\t\tmodel[index] = null;\r\n\t\trcp[index] = null;\r\n\t\tthis.setState({\r\n\t\t\tecosystem,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tmodel,\r\n\t\t\trcp,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateCriticalLoad = (newCriticalLoad, index) => {\r\n\t\tconst criticalLoad = this.state.criticalLoad.slice();\r\n\t\tcriticalLoad[index] = newCriticalLoad;\r\n\t\tthis.setState({ criticalLoad });\r\n\t};\r\n\r\n\tupdateDeposition = (newDeposition, index) => {\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tdeposition[index] = newDeposition;\r\n\t\tthis.setState({ deposition });\r\n\t};\r\n\r\n\tupdateModel = (newModel, newDepType, index) => {\r\n\t\tconst ecosystem = this.state.ecosystem.slice();\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tconst depType = this.state.depType.slice();\r\n\t\tconst model = this.state.model.slice();\r\n\t\tconst rcp = this.state.rcp.slice();\r\n\t\tif (\r\n\t\t\tthis.state.mapType[index] === \"exceedance\" &&\r\n\t\t\tthis.state.ecosystem[index] === null\r\n\t\t) {\r\n\t\t\tecosystem[index] = \"ta\";\r\n\t\t}\r\n\t\tdeposition[index] = null;\r\n\t\tdepType[index] = newDepType;\r\n\t\tmodel[index] = newModel;\r\n\t\trcp[index] = null;\r\n\t\tthis.setState({\r\n\t\t\tecosystem,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tmodel,\r\n\t\t\trcp,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateRCP = (newRCP, index) => {\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tconst rcp = this.state.rcp.slice();\r\n\t\tdeposition[index] = null;\r\n\t\trcp[index] = newRCP;\r\n\t\tthis.setState({ deposition, rcp });\r\n\t};\r\n\r\n\tupdateUnit = (newUnit, index) => {\r\n\t\tconst unit = this.state.unit.slice();\r\n\t\tunit[index] = newUnit;\r\n\t\tthis.setState({ unit });\r\n\t};\r\n\r\n\tresetDataOptions = (index) => {\r\n\t\tconst acidification = this.state.acidification.slice();\r\n\t\tconst ecosystem = this.state.ecosystem.slice();\r\n\t\tconst criticalLoad = this.state.criticalLoad.slice();\r\n\t\tconst deposition = this.state.deposition.slice();\r\n\t\tconst depType = this.state.depType.slice();\r\n\t\tconst model = this.state.model.slice();\r\n\t\tconst rcp = this.state.rcp.slice();\r\n\t\tconst year = this.state.year.slice();\r\n\t\tconst unit = this.state.unit.slice();\r\n\t\tconst title = this.state.title.slice();\r\n\t\tacidification[index] = null;\r\n\t\tecosystem[index] = null;\r\n\t\tcriticalLoad[index] = null;\r\n\t\tdeposition[index] = null;\r\n\t\tdepType[index] = null;\r\n\t\tmodel[index] = null;\r\n\t\trcp[index] = null;\r\n\t\tyear[index] = null;\r\n\t\tunit[index] = \"eq\";\r\n\t\ttitle[index] = null;\r\n\t\tthis.setState({\r\n\t\t\tacidification,\r\n\t\t\tecosystem,\r\n\t\t\tcriticalLoad,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tmodel,\r\n\t\t\trcp,\r\n\t\t\tyear,\r\n\t\t\tunit,\r\n\t\t\ttitle,\r\n\t\t});\r\n\t};\r\n\r\n\tupdateMapTypeSelection = (type, index) => {\r\n\t\tconst mapType = this.state.mapType.slice();\r\n\t\tmapType[index] = type;\r\n\t\tthis.setState({ mapType });\r\n\t};\r\n\r\n\tupdateOverlay = (options, index, action) => {\r\n\t\t//console.log(options);\r\n\t\tconst tempParentArray = this.state.overlays.slice();\r\n\t\tconst tempCellArray = this.state.overlays[index].slice();\r\n\t\tif (action === \"push\") {\r\n\t\t\ttempCellArray.push(...options);\r\n\t\t\ttempParentArray[index] = tempCellArray;\r\n\t\t\tthis.setState({ overlays: tempParentArray });\r\n\t\t} else {\r\n\t\t\tlet overlayIndex = tempCellArray.indexOf(options[0]);\r\n\t\t\ttempCellArray.splice(overlayIndex, 1);\r\n\t\t\toverlayIndex = tempCellArray.indexOf(options[1]);\r\n\t\t\tif (overlayIndex > -1) {\r\n\t\t\t\ttempCellArray.splice(overlayIndex, 1);\r\n\t\t\t}\r\n\t\t\ttempParentArray[index] = tempCellArray;\r\n\t\t\tthis.setState({ overlays: tempParentArray });\r\n\t\t}\r\n\t};\r\n\r\n\tupdateTitle = (newTitle, index) => {\r\n\t\tconst title = this.state.title.slice();\r\n\t\ttitle[index] = newTitle;\r\n\t\tthis.setState({ title });\r\n\t};\r\n\r\n\tupdateYear = (newYear, index) => {\r\n\t\tconst year = this.state.year.slice();\r\n\t\tyear[index] = newYear;\r\n\t\tthis.setState({ year });\r\n\t};\r\n\r\n\tsetTimeSliderYears = (min, max, index) => {\r\n\t\tconst timeSliderYears = this.state.timeSliderYears.slice();\r\n\t\ttimeSliderYears[index] = {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t};\r\n\t\tthis.setState({ timeSliderYears });\r\n\t};\r\n\r\n\t// Sync related functions\r\n\tsyncLocations = () => {\r\n\t\tthis.mapsController.syncLocations(this.state.activeView);\r\n\t};\r\n\r\n\tsyncDataOptions = () => {\r\n\t\tconst dataOptionsKeys = [\r\n\t\t\t\"acidification\",\r\n\t\t\t\"criticalLoad\",\r\n\t\t\t\"deposition\",\r\n\t\t\t\"depType\",\r\n\t\t\t\"ecosystem\",\r\n\t\t\t\"mapType\",\r\n\t\t\t\"model\",\r\n\t\t\t\"rcp\",\r\n\t\t\t\"title\",\r\n\t\t\t\"year\",\r\n\t\t\t\"overlays\",\r\n\t\t\t\"unit\",\r\n\t\t\t\"timeSliderYears\",\r\n\t\t];\r\n\t\tconst newState = {};\r\n\t\tdataOptionsKeys.forEach((key) => {\r\n\t\t\tconst dupArray = _fill(Array(4), this.state[key][this.state.activeView]);\r\n\t\t\tnewState[key] = dupArray;\r\n\t\t});\r\n\t\tthis.setState({ ...newState });\r\n\t};\r\n\r\n\t// Map UI related functions\r\n\tmapViewLayout = (layout) => {\r\n\t\tif (this.state.activeView >= layout) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tlayout: layout,\r\n\t\t\t\tactiveView: 0,\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.setState({ layout });\r\n\t\t}\r\n\t};\r\n\r\n\tshareURL = () => {\r\n\t\tconst extent = this.mapsController.shareURL();\r\n\t\twindow.location.hash =\r\n\t\t\tJSON.stringify(this.state) + extentSplit + JSON.stringify(extent);\r\n\t};\r\n\r\n\tsetURL = (url) => {\r\n\t\tthis.setState({ url: url });\r\n\t};\r\n\r\n\tsetActiveView = (activeView) => {\r\n\t\tif (!(activeView === this.state.activeView)) {\r\n\t\t\tthis.setState({ activeView });\r\n\t\t}\r\n\t};\r\n\r\n\tsetActiveViewClass = (view) => {\r\n\t\treturn this.state.activeView === view\r\n\t\t\t? `map-view layout-${this.state.layout} active`\r\n\t\t\t: `map-view layout-${this.state.layout}`;\r\n\t};\r\n\r\n\tupdateBaseMap = (index, basemap) => {\r\n\t\tconst basemapArray = this.state.basemap.slice();\r\n\t\tbasemapArray[index] = basemap;\r\n\t\tthis.setState({\r\n\t\t\tbasemap: basemapArray,\r\n\t\t});\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst {\r\n\t\t\tacidification,\r\n\t\t\tactiveView,\r\n\t\t\tbasemap,\r\n\t\t\tcriticalLoad,\r\n\t\t\tdeposition,\r\n\t\t\tdepType,\r\n\t\t\tecosystem,\r\n\t\t\tlayout,\r\n\t\t\tmapType,\r\n\t\t\tmodel,\r\n\t\t\toverlays,\r\n\t\t\trcp,\r\n\t\t\tunit,\r\n\t\t\ttitle,\r\n\t\t\ttimeSliderYears,\r\n\t\t\tyear,\r\n\t\t\turl,\r\n\t\t} = this.state;\r\n\t\tconst {\r\n\t\t\tviewReady,\r\n\t\t\tprintActiveReady,\r\n\t\t\tprintAllReady,\r\n\t\t\treportReady,\r\n\t\t\tdownloadReady,\r\n\t\t} = this.props;\r\n\t\tconst container = `map-view-sub-container container-${this.state.layout}`;\r\n\t\tconst map = [0, 1, 2, 3].map((m, i) => {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t//close identify popup if it's open - CLMAPPER-14\r\n\t\tif (document.getElementsByClassName(\"esri-icon-close\").length > 0) {\r\n\t\t\tdocument.getElementsByClassName(\"esri-icon-close\")[0].click();\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{map[0]}\r\n\t\t\t\t\t\t\t{map[1]}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{map[2]}\r\n\t\t\t\t\t\t\t{map[3]}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n","import MapsContainer from 'js/components/MapsContainer';\r\nimport React, {Component} from 'react';\r\nimport { store } from 'js/store';\r\nexport default class App extends Component {\r\n displayName: 'App';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ...store.getState()\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // Subscribe to the store for updates\r\n this.unsubscribe = store.subscribe(this.storeDidUpdate);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsubscribe();\r\n }\r\n\r\n storeDidUpdate = () => {\r\n this.setState(store.getState());\r\n };\r\n\r\n render () {\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType !== null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport \"index.css\";\r\nimport App from 'js/components/App';\r\nimport * as serviceWorker from 'serviceWorker';\r\n\r\nimport \"css/critical.scss\";\r\nimport \"css/app.scss\";\r\n\r\nReactDOM.render(, document.getElementById(\"react-mount\"));\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"],"sourceRoot":""}