{"version":3,"sources":["DateRangeSelect.js","AllocationMap.js","DateSelect.js","AggregationMap.js","MapView.js","AllocationDetails.js","AllocationJsonLd.js","App.js","index.js"],"names":["sliderStyle","position","width","height","railStyle","marginTop","borderRadius","backgroundColor","DateRangeSelect","props","domainMin","moment","valueOf","domainMax","React","useState","selected","setSelected","min","max","dateTicks","scaleTime","domain","ticks","map","d","Track","source","target","getTrackProps","style","zIndex","cursor","left","percent","Handle","ms","handle","id","value","getHandleProps","marginLeft","border","textAlign","color","fontFamily","fontSize","format","Tick","tick","count","formatTickTime","useEffect","filterDateRange","rootStyle","values","step","mode","onChange","getRailProps","handles","className","key","right","tracks","length","Highcharts","setOptions","lang","thousandsSep","mapboxgl","accessToken","layers","colorMap","name","beneficialUses","label","riverBasins","waterSourceTypes","ownerClassifications","AllocationMap","mapContainerRef","useRef","mapData","setMapData","allocationData","setAllocationData","beneficialUseFilter","setBeneficialUseFilter","waterSourceFilter","setWaterSourceFilter","allocationOwnerFilter","allocationOwnerClassificationFilter","setAllocationOwnerClassificationFilter","dateRangeFilter","setDateRangeFilter","riverBasinFilter","setRiverBasinFilter","waterSourceFilterRaw","setWaterSourceFilterRaw","allocationOwnerFilterRaw","allocationOwnerClassificationFilterRaw","setAllocationOwnerClassificationFilterRaw","dateRangeFilterRaw","setDateRangeFilterRaw","riverBasinFilterRaw","setRiverBasinFilterRaw","highChartsAllocationTypeCount","setHighChartsAllocationTypeCount","highChartsAllocationFlowCfs","setHighChartsAllocationFlowCfs","highChartsAllocationVolumeAf","setHighChartsAllocationVolumeAf","sortHighChartsData","data","c","list","i","val","find","sort","a","b","y","colors","k","getPolygonMapIntersect","userPolygon","polygonBoundingBox","turf","southWest","northEast","northEastPointPixel","project","southWestPointPixel","queryRenderedFeatures","reduce","memo","feature","geometry","coordinates","constructor","Array","push","properties","allocationId","filterRiverBasins","basinNames","myHeaders","Headers","append","raw","JSON","stringify","fetch","method","headers","body","redirect","then","response","text","result","forEach","item","setFilter","setTimeout","basins","basin","getLayer","removeLayer","getSource","removeSource","bottomCircleLayerId","renderedLayers","getStyle","type","allocationFilter","intersectFilter","addSource","basinName","addLayer","slice","renderRiverBasins","parse","catch","error","console","log","fetchAllocationData","allocationArr","Map","container","current","center","zoom","on","circleRadius","url","loadData","addControl","MapboxDraw","displayControlsDefault","boxSelect","controls","polygon","trash","e","features","loadPolygonSelection","x","getCanvas","point","Math","abs","lngLat","lng","document","createElement","jsx","siteUuid","ownerClassification","beneficialUseCV","waterSourceType","priorityDate","class","onClick","window","open","focus","description","ReactDOM","render","Popup","setLngLat","setDOMContent","addTo","loadPointSelection","remove","startDate","endDate","w","charAt","toUpperCase","substring","Date","BeneficialUses","WaterSourceType","AllocationOwnerClassification","AllocationOwner","BasinNames","StartDate","EndDate","sortedTypeCountTotal","sortedFlowCfsTotal","sortedVolumeAfTotal","metadata","sortedTypeCount","beneficialUse","sortedFlowCfs","flow","sortedVolumeAf","volume","chart","plotBackgroundColor","plotBorderWidth","plotShadow","events","event","total","this","series","toLocaleString","maximumFractionDigits","element","renderer","plotLeft","plotTop","css","attr","add","title","plotOptions","pie","allowPointSelect","tooltip","valueDecimals","valueSuffix","pointFormat","fetchAllocationMetaData","options","handleOnChange","activeLayerArray","layerArray","layerName","setLayoutProperty","toggleLayers","dateRange","htmlFor","sourceArr","filterValue","filterWaterSource","filterAllocationOwnerClassification","ref","highcharts","scope","allocation","waterSourceUUID","waterSourceName","allocationOwner","allocationExpiration","organizationName","organizationContactName","organizationContactEmail","DateSelect","year","variableTypes","dataSelectionTypes","AggregationMap","aggregateData","setAggregateData","timeSeriesData","setTimeSeriesData","highChartsData","setHighChartsData","dateFilter","setDateFilter","variableTypeFilter","setVariableTypeFilter","waterSourceTypeFilter","setWaterSourceTypeFilter","dataSelection","setDataSelection","ReportingUnitUuid","ReportYearCv","toString","BeneficialUseCv","VariableCv","WaterSourceTypeCV","ReportingUnitTypeCv","requestOptions","UnitUUID","reportYearCv","localeCompare","applyFilters","reportingUnitName","reportingUnit","reportingUnitUuid","variableType","renderedData","agg","parseInt","amount","xAxis","yAxis","legend","enabled","loadHighChartsData","selection","aggregationData","matchExpression","aggAmount","mid","generateColor","minimumAmount","maximumAmount","layer","loadShapeFile","fetchTimeSeriesData","arr","minX","maxX","minY","maxY","getPolygonCentroid","isNaN","Name","StateCV","setHTML","loadPolygonOnClick","waterSource","MapView","href","AllocationDetails","location","useLocation","resultObj","allocationBridgeSitesFacts","allocationAmount","allocationVolumeAf","allocationFlowCfs","organization","organizationWebsite","organizationPhoneNumber","allocationBridgeBeneficialUsesFacts","beneficialUseCvNavigation","waDename","pathname","split","pop","longitude","latitude","resize","epsgcodeCv","siteName","podorPousite","waterSourceUuid","waterSourceTypeCv","allocationAmountId","allocationNativeId","AllocationJsonLd","allocationJson","setAllocationJson","jsonLd","state","organizationUuid","Main","exact","path","component","App","getElementById"],"mappings":"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","file":"static/js/main.5e575301.chunk.js","sourcesContent":["import React, { useEffect } from 'react';\r\nimport { Slider, Rail, Handles, Tracks, Ticks } from 'react-compound-slider';\r\nimport { scaleTime } from \"d3-scale\";\r\nimport moment from 'moment';\r\n\r\n// Helpful tutorials:\r\n// https://www.npmjs.com/package/react-compound-slider\r\n// https://sghall.github.io/react-compound-slider/#/getting-started/tutorial\r\n// https://sghall.github.io/react-compound-slider/#/slider-demos/horizontal\r\n// https://sghall.github.io/react-compound-slider/#/component-api/slider\r\n// https://codesandbox.io/s/react-compound-slider-date-time-slider-forked-zgulo?file=/index.js:1871-1945\r\n\r\nconst sliderStyle = {\r\n position: 'relative',\r\n width: '100%',\r\n height: 90,\r\n}\r\n\r\nconst railStyle = {\r\n position: 'absolute',\r\n width: '100%',\r\n height: 10,\r\n marginTop: 35,\r\n borderRadius: 5,\r\n backgroundColor: '#fff',\r\n}\r\n\r\nconst DateRangeSelect = (props) => {\r\n const domainMin = moment(\"1850-01-01T20:00:00+0800\").valueOf();\r\n const domainMax = moment().valueOf();\r\n\r\n const [selected, setSelected] = React.useState([domainMin, domainMax]);\r\n const [min] = React.useState(domainMin);\r\n const [max] = React.useState(domainMax);\r\n\r\n const dateTicks = scaleTime()\r\n .domain([min, max])\r\n .ticks(15)\r\n .map((d) => +d);\r\n\r\n function Track({ source, target, getTrackProps }) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n function Handle({\r\n handle: { id, value, percent },\r\n getHandleProps\r\n }) {\r\n return (\r\n \r\n
\r\n {formatTime(value)}\r\n
\r\n \r\n )\r\n }\r\n\r\n function Tick({ tick, count, format }) {\r\n return (\r\n
\r\n \r\n \r\n {format(tick.value)}\r\n
\r\n \r\n );\r\n }\r\n\r\n function formatTime(ms) {\r\n let format = moment(ms).format('L');\r\n return format;\r\n }\r\n\r\n function formatTickTime(ms) {\r\n let format = moment(ms).format('YYYY');\r\n return format;\r\n }\r\n\r\n function onChange(values) {\r\n setSelected(values);\r\n }\r\n\r\n useEffect(() => {\r\n props.filterDateRange(selected);\r\n }, [selected]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {({ getRailProps }) => (\r\n
\r\n )}\r\n \r\n \r\n {({ handles, getHandleProps }) => (\r\n
\r\n {handles.map(handle => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n {({ tracks, getTrackProps }) => (\r\n
\r\n {tracks.map(({ id, source, target }) => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n {({ ticks }) => (\r\n
\r\n {ticks.map((tick) => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DateRangeSelect;\r\n","import React, { useRef, useEffect } from 'react';\r\nimport ReactDOM from \"react-dom\";\r\nimport mapboxgl from 'mapbox-gl';\r\nimport MapboxDraw from '@mapbox/mapbox-gl-draw';\r\nimport DropdownMultiselect from \"react-multiselect-dropdown-bootstrap\"; // https://www.npmjs.com/package/react-multiselect-dropdown-bootstrap\r\nimport moment from 'moment';\r\nimport Highcharts from 'highcharts';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport PieChart from \"highcharts-react-official\";\r\nimport DateRangeSelect from './DateRangeSelect';\r\nimport * as turf from '@turf/turf';\r\nimport './AllocationMap.css';\r\n\r\nHighcharts.setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n})\r\n\r\nmapboxgl.accessToken = 'pk.eyJ1IjoiYW1hYmRhbGxhaCIsImEiOiJjazJnbno5ZHIwazVqM21xZzMwaWpsc2hqIn0.j6BmkJdp5O_9ITGm4Gwe0w';\r\n\r\nconst layers = { layers: ['agricultural', 'aquaculture', 'commercial', 'domestic', 'environmental', 'fire', 'fish', 'flood', 'heating', 'industrial', 'instream', 'livestock', 'mining', 'municipal', 'other', 'power', 'recharge', 'recreation', 'snow', 'storage', 'unspecified', 'wildlife'] }\r\nconst colorMap = [{ name: 'Agricultural', color: '#006400' },\r\n{ name: 'Aquaculture', color: '#9ACD32' },\r\n{ name: 'Commercial', color: '#FF00E6' },\r\n{ name: 'Domestic', color: '#0000FF' },\r\n{ name: 'Environmental', color: '#32CD32' },\r\n{ name: 'Fire', color: '#FF4500' },\r\n{ name: 'Fish', color: '#9370DB' },\r\n{ name: 'Flood Control', color: '#00FFFF' },\r\n{ name: 'Heating and Cooling', color: '#FF69B4' },\r\n{ name: 'Industrial', color: '#800080' },\r\n{ name: 'Instream Flow', color: '#00BFFF' },\r\n{ name: 'Livestock', color: '#FFD700' },\r\n{ name: 'Mining', color: '#A52A2A' },\r\n{ name: 'Municipal', color: '#4B0082' },\r\n{ name: 'Other', color: '#808080' },\r\n{ name: 'Power', color: '#FFA500' },\r\n{ name: 'Recharge', color: '#D2691E' },\r\n{ name: 'Recreation', color: '#FFC0CB' },\r\n{ name: 'Snow Making', color: '#F0FFF0' },\r\n{ name: 'Storage', color: '#F5DEB3' },\r\n{ name: 'Unspecified', color: '#D3D3D3' },\r\n{ name: 'Wildlife', color: '#FF0000' }];\r\n\r\nconst beneficialUses = [\r\n { key: 'agricultural', label: 'Agricultural' },\r\n { key: 'aquaculture', label: 'Aquaculture' },\r\n { key: 'commercial', label: 'Commercial' },\r\n { key: 'domestic', label: 'Domestic' },\r\n { key: 'environmental', label: 'Environmental' },\r\n { key: 'fire', label: 'Fire' },\r\n { key: 'fish', label: 'Fish' },\r\n { key: 'flood', label: 'Flood' },\r\n { key: 'heating', label: 'Heating' },\r\n { key: 'industrial', label: 'Industrial' },\r\n { key: 'instream', label: 'Instream' },\r\n { key: 'livestock', label: 'Livestock' },\r\n { key: 'mining', label: 'Mining' },\r\n { key: 'municipal', label: 'Municipal' },\r\n { key: 'other', label: 'Other' },\r\n { key: 'power', label: 'Power' },\r\n { key: 'recharge', label: 'Recharge' },\r\n { key: 'recreation', label: 'Recreation' },\r\n { key: 'snow', label: 'Snow' },\r\n { key: 'storage', label: 'Storage' },\r\n { key: 'unspecified', label: 'Unspecified' },\r\n { key: 'wildlife', label: 'Wildlife' },\r\n]\r\nconst riverBasins = [\r\n { key: 'Bear River Basin', label: 'Bear River Basin' },\r\n { key: 'Colorado River Basin', label: 'Colorado River Basin' },\r\n { key: 'Columbia River Basin', label: 'Columbia River Basin' },\r\n { key: 'Rio Grande River Basin', label: 'Grande River Basin' },\r\n { key: 'Missouri River Basin', label: 'Missouri River Basin' },\r\n { key: 'Klamath River Basin', label: 'Klamath River Basin' },\r\n { key: 'Sacramento - San Joaquin River Basin', label: 'Sacramento - San Joaquin River Basin' },\r\n { key: 'Truckee - Carson River Basin', label: 'Truckee - Carson River Basin' },\r\n { key: 'Arkansas River Basin', label: 'Arkansas River Basin' },\r\n { key: 'Pecos River Basin', label: 'Pecos River Basin' }\r\n]\r\nconst waterSourceTypes = [\r\n { key: 'Groundwater', label: 'Groundwater' },\r\n { key: 'Other', label: 'Other' },\r\n // 'Hidden' at client request\r\n // { key: 'Reservoir / Storage', label: 'Reservoir / Storage' },\r\n // { key: 'Surface and Groundwater', label: 'Surface and Groundwater' },\r\n { key: 'Surface Water', label: 'Surface Water' },\r\n { key: 'Unspecified', label: 'Unspecified' }\r\n]\r\nconst ownerClassifications = [\r\n { key: 'Army (USA)', label: 'Army (USA)' },\r\n { key: 'Bureau of Indian Affairs (USBIA)', label: 'Bureau of Indian Affairs (USBIA)' },\r\n { key: 'Bureau of Land Management (USBLM)', label: 'Bureau of Land Management (USBLM)' },\r\n { key: 'Bureau Reclamation (USBR)', label: 'Bureau Reclamation (USBR)' },\r\n { key: 'City', label: 'City' },\r\n { key: 'Coast Guard (USCG)', label: 'Coast Guard (USCG)' },\r\n { key: 'Commercial', label: 'Commercial' },\r\n { key: 'Customs and Border Patrol (USCBP)', label: 'Customs and Border Patrol (USCBP)' },\r\n { key: 'Department of Agriculture (USDA)', label: 'Department of Agriculture (USDA)' },\r\n { key: 'Department of Defense (USDOD)', label: 'Department of Defense (USDOD)' },\r\n { key: 'Department of Energy (USDOE)', label: 'Department of Energy (USDOE)' },\r\n { key: 'Department of Homeland Security (USDHS)', label: 'Department of Homeland Security (USDHS)' },\r\n { key: 'Department of Housing and Urban Development (USHUD)', label: 'Department of Housing and Urban Development (USHUD)' },\r\n { key: 'Department of Justice (USDOJ)', label: 'Department of Justice (USDOJ)' },\r\n { key: 'Department of the Interior (USDI)', label: 'Department of the Interior (USDI)' },\r\n { key: 'Department of Transportation (USDOT)', label: 'Department of Transportation (USDOT)' },\r\n { key: 'Department of Veterans Affairs (USVA)', label: 'Department of Veterans Affairs (USVA)' },\r\n { key: 'Environmental Protection Agency (USEPA)', label: 'Environmental Protection Agency (USEPA)' },\r\n { key: 'Federal Aviation Administration (USFAA)', label: 'Federal Aviation Administration (USFAA)' },\r\n { key: 'Fish and Wildlife Service (USFWS)', label: 'Fish and Wildlife Service (USFWS)' },\r\n { key: 'Forest Service (USFS)', label: 'Forest Service (USFS)' },\r\n { key: 'General Services Administration (USGSA)', label: 'General Services Administration (USGSA)' },\r\n { key: 'Geological Survey (USGS)', label: 'Geological Survey (USGS)' },\r\n { key: 'In Review', label: 'In Review' },\r\n { key: 'Indian Health Service (USIHS)', label: 'Indian Health Service (USIHS)' },\r\n { key: 'Institution', label: 'Institution' },\r\n { key: 'Marine Corps (USMC)', label: 'Marine Corps (USMC)' },\r\n { key: 'National Geodetic Survey (USNGS)', label: 'National Geodetic Survey (USNGS)' },\r\n { key: 'National Park Service (USNPS)', label: 'National Park Service (USNPS)' },\r\n { key: 'Native American', label: 'Native American' },\r\n { key: 'Navy (USN)', label: 'Navy (USN)' },\r\n { key: 'State', label: 'State' },\r\n { key: 'Trust', label: 'Trust' },\r\n { key: 'United States Air Force (USAF)', label: 'United States Air Force (USAF)' },\r\n { key: 'United States of America', label: 'United States of America' },\r\n { key: 'United States Postal Service (USPS)', label: 'United States Postal Service (USPS)' },\r\n { key: 'Unspecified', label: 'Unspecified' }\r\n]\r\n\r\n\r\nconst AllocationMap = () => {\r\n // Map Data\r\n const mapContainerRef = useRef(null);\r\n const [mapData, setMapData] = React.useState(null);\r\n\r\n // Allocation Data\r\n const [allocationData, setAllocationData] = React.useState([]);\r\n\r\n // Filter Data\r\n const [beneficialUseFilter, setBeneficialUseFilter] = React.useState(null);\r\n const [waterSourceFilter, setWaterSourceFilter] = React.useState(null);\r\n const [allocationOwnerFilter, setAllocationOwnerFilter] = React.useState(null);\r\n const [allocationOwnerClassificationFilter, setAllocationOwnerClassificationFilter] = React.useState(null);\r\n const [dateRangeFilter, setDateRangeFilter] = React.useState(null);\r\n const [riverBasinFilter, setRiverBasinFilter] = React.useState(null);\r\n\r\n const [waterSourceFilterRaw, setWaterSourceFilterRaw] = React.useState(null);\r\n const [allocationOwnerFilterRaw, setAllocationOwnerFilterRaw] = React.useState(null);\r\n const [allocationOwnerClassificationFilterRaw, setAllocationOwnerClassificationFilterRaw] = React.useState(null);\r\n const [dateRangeFilterRaw, setDateRangeFilterRaw] = React.useState(null);\r\n const [riverBasinFilterRaw, setRiverBasinFilterRaw] = React.useState(null);\r\n\r\n // Rendered Feature Data\r\n const [highChartsAllocationTypeCount, setHighChartsAllocationTypeCount] = React.useState(null);\r\n const [highChartsAllocationFlowCfs, setHighChartsAllocationFlowCfs] = React.useState(null);\r\n const [highChartsAllocationVolumeAf, setHighChartsAllocationVolumeAf] = React.useState(null);\r\n\r\n useEffect(() => {\r\n let map = new mapboxgl.Map({\r\n container: mapContainerRef.current,\r\n style: 'mapbox://styles/mapbox/dark-v10',\r\n center: [-100, 40],\r\n zoom: 4\r\n });\r\n\r\n // Load Data\r\n loadData(map);\r\n\r\n // Load Interactions\r\n loadPolygonSelection(map);\r\n loadPointSelection(map);\r\n\r\n return () => map.remove();\r\n }, []);\r\n\r\n useEffect(() => {\r\n fetchAllocationMetaData(beneficialUseFilter, waterSourceFilterRaw, allocationOwnerFilterRaw, allocationOwnerClassificationFilterRaw, dateRangeFilterRaw, riverBasinFilterRaw);\r\n }, [beneficialUseFilter, waterSourceFilterRaw, allocationOwnerFilterRaw, allocationOwnerClassificationFilterRaw, dateRangeFilterRaw, riverBasinFilterRaw]);\r\n\r\n function loadData(map) {\r\n setMapData(map);\r\n\r\n map.on('load', function () {\r\n let circleRadius = {\r\n 'base': 1.25,\r\n 'stops': [\r\n [0, 2],\r\n [7, 2],\r\n [10, 4],\r\n [15, 20],\r\n [20, 40]\r\n ]\r\n }\r\n\r\n map.addSource('allocation-sites_1', {\r\n type: \"vector\",\r\n url: \"mapbox://amabdallah.70zvl3m1\"\r\n });\r\n\r\n map.addSource('allocation-sites_2', {\r\n type: \"vector\",\r\n url: \"mapbox://amabdallah.3ghcfjn8\"\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'aquaculture',\r\n 'source-layer': 'aquaculture',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#9ACD32'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'commercial',\r\n 'source-layer': 'commercial',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FF00E6'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'domestic',\r\n 'source-layer': 'domestic',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#0000FF'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'environmental',\r\n 'source-layer': 'environmental',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#32CD32'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'fire',\r\n 'source-layer': 'fire',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FF4500'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'fish',\r\n 'source-layer': 'fish',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#9370DB'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'flood',\r\n 'source-layer': 'flood',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#00FFFF'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'heating',\r\n 'source-layer': 'heating',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FF69B4'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'industrial',\r\n 'source-layer': 'industrial',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#800080'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'instream',\r\n 'source-layer': 'instream',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#00BFFF'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'livestock',\r\n 'source-layer': 'livestock',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FFD700'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'mining',\r\n 'source-layer': 'mining',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#A52A2A'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'municipal',\r\n 'source-layer': 'municipal',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#4B0082'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'other',\r\n 'source-layer': 'other',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#808080'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'power',\r\n 'source-layer': 'power',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FFA500'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'recharge',\r\n 'source-layer': 'recharge',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#D2691E'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'recreation',\r\n 'source-layer': 'recreation',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FFC0CB'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'snow',\r\n 'source-layer': 'snow',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#F0FFF0'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'storage',\r\n 'source-layer': 'storage',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#F5DEB3'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'unspecified',\r\n 'source-layer': 'unspecified',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#D3D3D3'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'wildlife',\r\n 'source-layer': 'wildlife',\r\n 'source': 'allocation-sites_2',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#FF0000'\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'agricultural',\r\n 'source-layer': 'agricultural',\r\n 'source': 'allocation-sites_1',\r\n 'layout': {\r\n 'visibility': 'visible'\r\n },\r\n 'type': 'circle',\r\n 'paint': {\r\n 'circle-radius': circleRadius,\r\n 'circle-color': '#006400'\r\n }\r\n });\r\n });\r\n }\r\n\r\n function sortHighChartsData(data) {\r\n var mergeData = (d, c) => d.map(i => ({\r\n val: i,\r\n color: c.find((c) => c.name === i.name)\r\n }))\r\n\r\n let list = mergeData(data, colorMap);\r\n\r\n list.sort(function (a, b) {\r\n return ((a.val.y < b.val.y) ? -1 : ((a.val.y == b.val.y) ? 0 : 1));\r\n });\r\n\r\n let colors = [];\r\n for (var k = 0; k < list.length; k++) {\r\n data[k] = list[k].val;\r\n colors[k] = list[k].color.color;\r\n }\r\n\r\n return {\r\n data,\r\n colors\r\n }\r\n }\r\n\r\n function loadPolygonSelection(map) {\r\n map.addControl(new MapboxDraw({\r\n displayControlsDefault: false,\r\n boxSelect: true,\r\n controls: {\r\n polygon: true,\r\n trash: true\r\n }\r\n }));\r\n\r\n map.on('draw.create', function (e) {\r\n fetchAllocationData(getPolygonMapIntersect(map, e.features[0]).slice(2));\r\n });\r\n\r\n map.on('draw.update', function (e) {\r\n fetchAllocationData(getPolygonMapIntersect(map, e.features[0]).slice(2));\r\n });\r\n\r\n map.on('draw.delete', function (e) {\r\n fetchAllocationData();\r\n });\r\n }\r\n\r\n function loadPointSelection(map) {\r\n layers.layers.forEach(e => {\r\n map.on('mousemove', e, (x) => {\r\n map.getCanvas().style.cursor = 'pointer';\r\n });\r\n map.on('mouseleave', e, (x) => {\r\n map.getCanvas().style.cursor = '';\r\n });\r\n });\r\n\r\n map.on('click', function (e) {\r\n let features = map.queryRenderedFeatures(e.point, layers);\r\n if (features.length) {\r\n var feature = features[0]; //topmost feature\r\n fetchAllocationData([feature.properties.allocationId]);\r\n\r\n var coordinates = feature.geometry.coordinates.slice();\r\n\r\n while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {\r\n coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;\r\n }\r\n\r\n if (coordinates[0].constructor === Array) {\r\n coordinates = coordinates[0];\r\n }\r\n\r\n var container = document.createElement('div');\r\n\r\n var jsx =
\r\n {feature.properties.siteUuid}\r\n
{feature.properties.ownerClassification}
\r\n
{feature.properties.beneficialUseCV}
\r\n
{feature.properties.waterSourceType}
\r\n
{moment(feature.properties.priorityDate).format('DD-MMM-YYYY')}
\r\n \r\n
\r\n\r\n var description = ReactDOM.render(jsx, container);\r\n\r\n new mapboxgl.Popup()\r\n .setLngLat(coordinates)\r\n .setDOMContent(description)\r\n .addTo(map);\r\n }\r\n });\r\n }\r\n\r\n function openAllocationDetails(id) {\r\n const win = window.open(\"/details/\" + id, \"_blank\");\r\n win.focus();\r\n }\r\n\r\n function toggleLayers(activeLayerArray) {\r\n setBeneficialUseFilter(activeLayerArray);\r\n\r\n let layerArray = layers.layers;\r\n let map = mapData\r\n\r\n layerArray.map(layerName => map.setLayoutProperty(layerName, 'visibility', 'none'));\r\n activeLayerArray.map(layerName => map.setLayoutProperty(layerName, 'visibility', 'visible'));\r\n }\r\n\r\n function renderRiverBasins(basins) {\r\n let map = mapData;\r\n\r\n // Remove old layers\r\n riverBasins.map(basin => {\r\n if (map.getLayer(basin.key)) {\r\n map.removeLayer(basin.key);\r\n }\r\n if (map.getSource(basin.key)) {\r\n map.removeSource(basin.key);\r\n }\r\n });\r\n\r\n // Get bottom layer\r\n var renderedLayers = map.getStyle().layers;\r\n var bottomCircleLayerId;\r\n for (var i = 0; i < renderedLayers.length; i++) {\r\n if (renderedLayers[i].type === 'circle') {\r\n bottomCircleLayerId = renderedLayers[i].id;\r\n break;\r\n }\r\n }\r\n\r\n var intersectFilter = ['in', 'allocationId'];\r\n\r\n basins.map(basin => {\r\n map.addSource(basin.properties.basinName, {\r\n 'type': 'geojson',\r\n 'data': basin\r\n });\r\n\r\n map.addLayer({\r\n 'id': basin.properties.basinName,\r\n 'type': 'fill',\r\n 'source': basin.properties.basinName,\r\n 'layout': {},\r\n 'paint': {\r\n 'fill-color': '#088',\r\n 'fill-opacity': 0.4\r\n }\r\n }, bottomCircleLayerId);\r\n\r\n getPolygonMapIntersect(map, basin).slice(2).map(allocationId => intersectFilter.push(allocationId));\r\n });\r\n\r\n var allocationFilter;\r\n if (intersectFilter.length > 2) {\r\n allocationFilter = [\r\n \"all\",\r\n intersectFilter\r\n ];\r\n } else {\r\n allocationFilter = [\"all\"];\r\n }\r\n\r\n setRiverBasinFilter(intersectFilter);\r\n\r\n if (dateRangeFilter !== null) {\r\n allocationFilter.push(dateRangeFilter);\r\n }\r\n\r\n if (waterSourceFilter !== null) {\r\n allocationFilter.push(waterSourceFilter);\r\n }\r\n\r\n if (allocationOwnerFilter !== null) {\r\n allocationFilter.push(allocationOwnerFilter);\r\n }\r\n\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, allocationFilter);\r\n });\r\n }\r\n\r\n function getPolygonMapIntersect(map, userPolygon) {\r\n var polygonBoundingBox = turf.bbox(userPolygon);\r\n\r\n var southWest = [polygonBoundingBox[0], polygonBoundingBox[1]];\r\n var northEast = [polygonBoundingBox[2], polygonBoundingBox[3]];\r\n\r\n var northEastPointPixel = map.project(northEast);\r\n var southWestPointPixel = map.project(southWest);\r\n\r\n var features = map.queryRenderedFeatures([southWestPointPixel, northEastPointPixel], layers);\r\n\r\n var filter = features.reduce(function (memo, feature) {\r\n if (feature.geometry.coordinates[0].constructor === Array) {\r\n feature.geometry.coordinates = feature.geometry.coordinates[0];\r\n }\r\n\r\n if (turf.inside(feature, userPolygon)) {\r\n memo.push(feature.properties.allocationId);\r\n }\r\n return memo;\r\n }, ['in', 'allocationId']);\r\n\r\n return filter;\r\n }\r\n\r\n function filterRiverBasins(basinNames) {\r\n let map = mapData;\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n setRiverBasinFilterRaw(basinNames);\r\n\r\n var raw = JSON.stringify(basinNames);\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // fetch(\"http://localhost:7071/api/GetBasinPolygonByNames\", requestOptions)\r\n fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetBasinPolygonByNames\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, [\"all\"]);\r\n });\r\n setTimeout(() => { renderRiverBasins(JSON.parse(result)); }, 100);\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n\r\n function filterDateRange(dateRange) {\r\n if (dateRange == null || mapData == null) {\r\n return;\r\n }\r\n\r\n setDateRangeFilterRaw(dateRange);\r\n\r\n var map = mapData;\r\n var min = dateRange[0];\r\n var max = dateRange[1];\r\n\r\n var allocationFilter = [\r\n \"all\",\r\n [\">=\", \"priorityDate\", min],\r\n [\"<=\", \"priorityDate\", max]\r\n ];\r\n\r\n setDateRangeFilter(allocationFilter);\r\n\r\n if (allocationOwnerFilter !== null) {\r\n allocationFilter.push(allocationOwnerFilter);\r\n }\r\n\r\n if (waterSourceFilter !== null) {\r\n allocationFilter.push(waterSourceFilter);\r\n }\r\n\r\n if (riverBasinFilter !== null) {\r\n allocationFilter.push(riverBasinFilter);\r\n }\r\n\r\n if (allocationOwnerClassificationFilter !== null) {\r\n allocationFilter.push(allocationOwnerClassificationFilter);\r\n }\r\n\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, allocationFilter);\r\n });\r\n }\r\n\r\n function filterWaterSource(sourceArr) {\r\n var map = mapData;\r\n var filterValue = sourceArr;\r\n\r\n setWaterSourceFilterRaw(sourceArr);\r\n\r\n var allocationFilter;\r\n if (filterValue.length > 0) {\r\n allocationFilter = [\r\n \"all\",\r\n [\"in\", \"waterSourceType\"]\r\n ];\r\n sourceArr.map(source => {\r\n allocationFilter[1].push(source);\r\n });\r\n } else {\r\n allocationFilter = [\"all\"];\r\n }\r\n\r\n setWaterSourceFilter(allocationFilter);\r\n\r\n if (dateRangeFilter !== null) {\r\n allocationFilter.push(dateRangeFilter);\r\n }\r\n\r\n if (allocationOwnerFilter !== null) {\r\n allocationFilter.push(allocationOwnerFilter);\r\n }\r\n\r\n if (riverBasinFilter !== null) {\r\n allocationFilter.push(riverBasinFilter);\r\n }\r\n\r\n if (allocationOwnerClassificationFilter !== null) {\r\n allocationFilter.push(allocationOwnerClassificationFilter);\r\n }\r\n\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, allocationFilter);\r\n });\r\n }\r\n\r\n function filterAllocationOwnerClassification(sourceArr) {\r\n var map = mapData;\r\n var filterValue = sourceArr;\r\n\r\n setAllocationOwnerClassificationFilterRaw(sourceArr)\r\n\r\n var allocationFilter;\r\n if (filterValue.length > 0) {\r\n allocationFilter = [\r\n \"all\",\r\n [\"in\", \"ownerClassification\"]\r\n ];\r\n sourceArr.map(source => {\r\n allocationFilter[1].push(source);\r\n });\r\n } else {\r\n allocationFilter = [\"all\"];\r\n }\r\n\r\n setAllocationOwnerClassificationFilter(allocationFilter);\r\n\r\n if (dateRangeFilter !== null) {\r\n allocationFilter.push(dateRangeFilter);\r\n }\r\n\r\n if (waterSourceFilter !== null) {\r\n allocationFilter.push(waterSourceFilter);\r\n }\r\n\r\n if (allocationOwnerFilter !== null) {\r\n allocationFilter.push(allocationOwnerFilter);\r\n }\r\n\r\n if (riverBasinFilter !== null) {\r\n allocationFilter.push(riverBasinFilter);\r\n }\r\n\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, allocationFilter);\r\n });\r\n }\r\n\r\n function filterAllocationOwner(e) {\r\n var map = mapData;\r\n var filterValue = e.target.value;\r\n\r\n setAllocationOwnerFilterRaw(filterValue);\r\n\r\n var allocationFilter;\r\n if (filterValue !== \"\") {\r\n allocationFilter = [\r\n \"all\",\r\n [\"in\", \"allocationOwner\", filterValue]\r\n ];\r\n } else {\r\n allocationFilter = [\"all\"];\r\n }\r\n\r\n setAllocationOwnerFilter(allocationFilter);\r\n\r\n if (dateRangeFilter !== null) {\r\n allocationFilter.push(dateRangeFilter);\r\n }\r\n\r\n if (waterSourceFilter !== null) {\r\n allocationFilter.push(waterSourceFilter);\r\n }\r\n\r\n if (riverBasinFilter !== null) {\r\n allocationFilter.push(riverBasinFilter);\r\n }\r\n\r\n if (allocationOwnerClassificationFilter !== null) {\r\n allocationFilter.push(allocationOwnerClassificationFilter);\r\n }\r\n\r\n layers.layers.forEach((item) => {\r\n map.setFilter(item, allocationFilter);\r\n });\r\n }\r\n\r\n function fetchAllocationData(allocationArr) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n var raw = JSON.stringify(allocationArr);\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // fetch(\"http://localhost:7071/api/GetWaterAllocationData\", requestOptions)\r\n fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAllocationData\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n setAllocationData(JSON.parse(result));\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n\r\n function fetchAllocationMetaData(beneficialUseFilter, waterSourceFilter, allocationOwnerFilter, allocationOwnerClassificationFilter, dateRangeFilter, riverBasinFilter) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n if (beneficialUseFilter !== null) {\r\n beneficialUseFilter = beneficialUseFilter.map(w => w.charAt(0).toUpperCase() + w.substring(1))\r\n }\r\n\r\n var startDate, endDate;\r\n if (dateRangeFilter !== null) {\r\n startDate = moment(dateRangeFilter[0]).format();\r\n endDate = moment(dateRangeFilter[1]).format();\r\n } else {\r\n startDate = moment(new Date('1850/01/01')).format();\r\n endDate = moment().format();\r\n }\r\n\r\n var raw = JSON.stringify({\r\n BeneficialUses: beneficialUseFilter ?? [],\r\n WaterSourceType: waterSourceFilter ?? [],\r\n AllocationOwnerClassification: allocationOwnerClassificationFilter ?? [],\r\n AllocationOwner: allocationOwnerFilter ?? \"\",\r\n BasinNames: riverBasinFilter ?? [],\r\n StartDate: startDate,\r\n EndDate: endDate\r\n });\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // fetch(\"http://localhost:7071/api/GetWaterAllocationsMetaData\", requestOptions)\r\n fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAllocationsMetaData\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n let metadata = JSON.parse(result);\r\n\r\n var sortedTypeCount = sortHighChartsData(metadata.map(x => ({ name: x.beneficialUse, y: x.count })));\r\n var sortedFlowCfs = sortHighChartsData(metadata.map(x => ({ name: x.beneficialUse, y: x.flow })));\r\n var sortedVolumeAf = sortHighChartsData(metadata.map(x => ({ name: x.beneficialUse, y: x.volume })));\r\n\r\n var sortedTypeCountTotal;\r\n var sortedFlowCfsTotal;\r\n var sortedVolumeAfTotal;\r\n\r\n setHighChartsAllocationTypeCount({\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n events: {\r\n render: function (event) {\r\n var total = this.series[0].data[0].total.toLocaleString('en-US', { maximumFractionDigits: 0 });\r\n if (typeof (sortedTypeCountTotal) != \"undefined\") {\r\n sortedTypeCountTotal.element.remove();\r\n }\r\n sortedTypeCountTotal = this.renderer\r\n .text(\r\n 'Total: ' + total,\r\n this.plotLeft,\r\n this.plotTop,\r\n )\r\n .css({\r\n color: '#ff0000',\r\n })\r\n .attr({\r\n zIndex: 5,\r\n }).add();\r\n }\r\n }\r\n },\r\n title: {\r\n text: 'Count of Rendered Beneficial Uses'\r\n },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n colors: sortedTypeCount.colors\r\n }\r\n },\r\n tooltip: {\r\n valueDecimals: 0,\r\n valueSuffix: '',\r\n pointFormat: '{point.y}',\r\n style: {\r\n fontSize: \"16px\"\r\n }\r\n },\r\n series: [\r\n {\r\n data: sortedTypeCount.data\r\n }\r\n ]\r\n });\r\n\r\n setHighChartsAllocationFlowCfs({\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n events: {\r\n render: function (event) {\r\n var total = this.series[0].data[0].total.toLocaleString('en-US', { maximumFractionDigits: 0 });\r\n console.log(total);\r\n if (typeof (sortedFlowCfsTotal) != \"undefined\") {\r\n sortedFlowCfsTotal.element.remove();\r\n }\r\n sortedFlowCfsTotal = this.renderer\r\n .text(\r\n 'Total: ' + total + ' CFS',\r\n this.plotLeft,\r\n this.plotTop\r\n )\r\n .css({\r\n color: '#ff0000',\r\n })\r\n .attr({\r\n zIndex: 5\r\n }).add()\r\n }\r\n }\r\n },\r\n title: {\r\n text: 'Cumulative Flow (CFS) of Rendered Allocations'\r\n },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n colors: sortedFlowCfs.colors\r\n }\r\n },\r\n tooltip: {\r\n valueDecimals: 2,\r\n valueSuffix: ' CFS',\r\n pointFormat: '{point.y}',\r\n style: {\r\n fontSize: \"16px\"\r\n }\r\n },\r\n series: [\r\n {\r\n data: sortedFlowCfs.data\r\n }\r\n ]\r\n });\r\n\r\n setHighChartsAllocationVolumeAf({\r\n chart: {\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n type: 'pie',\r\n events: {\r\n render: function (event) {\r\n var total = this.series[0].data[0].total.toLocaleString('en-US', { maximumFractionDigits: 0 });\r\n if (typeof (sortedVolumeAfTotal) != \"undefined\") {\r\n sortedVolumeAfTotal.element.remove();\r\n }\r\n sortedVolumeAfTotal = this.renderer\r\n .text(\r\n 'Total: ' + total + ' AF',\r\n this.plotLeft,\r\n this.plotTop\r\n )\r\n .css({\r\n color: '#ff0000',\r\n })\r\n .attr({\r\n zIndex: 5\r\n }).add()\r\n }\r\n }\r\n },\r\n title: {\r\n text: 'Cumulative Volume (AF) of Rendered Allocations'\r\n },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n colors: sortedVolumeAf.colors,\r\n }\r\n },\r\n tooltip: {\r\n valueDecimals: 2,\r\n valueSuffix: ' AF',\r\n pointFormat: '{point.y}',\r\n style: {\r\n fontSize: \"16px\"\r\n }\r\n },\r\n series: [\r\n {\r\n data: sortedVolumeAf.data\r\n }\r\n ]\r\n });\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n\r\n return (\r\n
\r\n {/* Filters */}\r\n
\r\n
\r\n
\r\n \r\n toggleLayers(selected)}\r\n name=\"beneficialUses\"\r\n />\r\n
\r\n
\r\n \r\n filterRiverBasins(selected)}\r\n name=\"riverBasins\"\r\n />\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n x.key)}\r\n handleOnChange={(selected) => filterWaterSource(selected)}\r\n name=\"waterSource\"\r\n />\r\n
\r\n
\r\n \r\n x.key)}\r\n handleOnChange={(selected) => filterAllocationOwnerClassification(selected)}\r\n name=\"ownerClassification\"\r\n />\r\n
\r\n {/* Hidden at client request */}\r\n {/*
\r\n \r\n \r\n
*/}\r\n
\r\n
\r\n {/* Map & Legend */}\r\n
\r\n
\r\n
\r\n
\r\n

Feature Types

\r\n
Agricultural
\r\n
Aquaculture
\r\n
Commercial
\r\n
Domestic
\r\n
Environmental
\r\n
Fire
\r\n
Fish
\r\n
Flood Control
\r\n
Heating and Cooling
\r\n
Industrial
\r\n
Instream Flow
\r\n
Livestock
\r\n
Mining
\r\n
Municipal
\r\n
Other
\r\n
Power
\r\n
Recharge
\r\n
Recreation
\r\n
Snow Making
\r\n
Storage
\r\n
Unspecified
\r\n
Wildlife
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n { /* Charts */}\r\n
\r\n
\r\n
\r\n {\r\n highChartsAllocationTypeCount &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n {\r\n highChartsAllocationFlowCfs &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n {\r\n highChartsAllocationVolumeAf &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n {/* Data */}\r\n
\r\n {\r\n allocationData.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {allocationData.map((allocation) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
Source IDSource NameSource TypeAllocation OwnerAllocation ExpirationBeneficial UseOrganizationOrganization Contact
{allocation.waterSourceUUID}{allocation.waterSourceName}{allocation.waterSourceType}{allocation.allocationOwner}{allocation.allocationExpiration}{allocation.beneficialUseCV}{allocation.organizationName}{allocation.organizationContactName}: {allocation.organizationContactEmail}
\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AllocationMap;\r\n","import React, { useEffect } from 'react';\r\nimport { Slider, Rail, Handles, Tracks, Ticks } from 'react-compound-slider';\r\nimport { scaleTime } from \"d3-scale\";\r\nimport moment from 'moment';\r\n\r\n// Helpful tutorials:\r\n// https://www.npmjs.com/package/react-compound-slider\r\n// https://sghall.github.io/react-compound-slider/#/getting-started/tutorial\r\n// https://sghall.github.io/react-compound-slider/#/slider-demos/horizontal\r\n// https://sghall.github.io/react-compound-slider/#/component-api/slider\r\n// https://codesandbox.io/s/react-compound-slider-date-time-slider-forked-zgulo?file=/index.js:1871-1945\r\n\r\nconst sliderStyle = {\r\n position: 'relative',\r\n width: '100%',\r\n height: 90,\r\n}\r\n\r\nconst railStyle = {\r\n position: 'absolute',\r\n width: '100%',\r\n height: 10,\r\n marginTop: 35,\r\n borderRadius: 5,\r\n backgroundColor: '#fff',\r\n}\r\n\r\nconst DateSelect = (props) => {\r\n const domainMin = 1985;\r\n const domainMax = moment().year().valueOf();\r\n\r\n const [selected, setSelected] = React.useState([domainMax]);\r\n const [min] = React.useState(domainMin);\r\n const [max] = React.useState(domainMax);\r\n\r\n const dateTicks = scaleTime()\r\n .domain([min, max])\r\n .ticks((max - min) / 5)\r\n .map((d) => +d);\r\n\r\n function Track({ source, target, getTrackProps }) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n function Handle({\r\n handle: { id, value, percent },\r\n getHandleProps\r\n }) {\r\n return (\r\n \r\n
\r\n {value}\r\n
\r\n
\r\n )\r\n }\r\n\r\n function Tick({ tick, count, format }) {\r\n return (\r\n
\r\n \r\n \r\n {format(tick.value)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n function formatTickTime(ms) {\r\n return ms;\r\n }\r\n\r\n function onChange(values) {\r\n setSelected(values);\r\n }\r\n\r\n useEffect(() => {\r\n props.filterDateRange(selected);\r\n }, [selected]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {({ getRailProps }) => (\r\n
\r\n )}\r\n \r\n \r\n {({ handles, getHandleProps }) => (\r\n
\r\n {handles.map(handle => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n {({ tracks, getTrackProps }) => (\r\n
\r\n {tracks.map(({ id, source, target }) => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n {({ ticks }) => (\r\n
\r\n {ticks.map((tick) => (\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DateSelect;\r\n","import React, { useRef, useEffect } from 'react';\r\nimport mapboxgl from 'mapbox-gl';\r\nimport moment from 'moment';\r\nimport DateSelect from './DateSelect';\r\nimport Highcharts from 'highcharts';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport './AggregationMap.css';\r\n\r\nmapboxgl.accessToken =\r\n 'pk.eyJ1IjoiYW1hYmRhbGxhaCIsImEiOiJjazJnbno5ZHIwazVqM21xZzMwaWpsc2hqIn0.j6BmkJdp5O_9ITGm4Gwe0w';\r\n\r\nconst waterSourceTypes = [\"Effluent\", \"Groundwater\", \"Lost\", \"Other\", \"Recharge\", \"Reservoir / Storage\", \"Surface and Groundwater\", \"Surface Water\", \"Unspecified\"];\r\nconst beneficialUses = [\"Agricultural\", \"Aquaculture\", \"Commercial\", \"Domestic\", \"Environmental\", \"Fire\", \"Fish\", \"Flood Control\", \"Heating\", \"Heating and Cooling\", \"Industrial\", \"Instream Flow\", \"Livestock\", \"Mining\", \"Municipal\", \"Other\", \"Power\", \"Recharge\", \"Recreation\", \"Snow Making\", \"Storage\", \"Unspecified\", \"Wildlife\"];\r\nconst variableTypes = [\"Consumptive Use\", \"Demand\", \"Supply\", \"Withdrawal\"];\r\n\r\nconst dataSelectionTypes = [\"Counties\", \"Basin\", \"DAUCO\", \"HUC8\", \"HR\"];\r\n\r\nconst AggregationMap = () => {\r\n const mapContainerRef = useRef(null);\r\n\r\n // Data\r\n const [aggregateData, setAggregateData] = React.useState([]);\r\n const [timeSeriesData, setTimeSeriesData] = React.useState([]);\r\n const [highChartsData, setHighChartsData] = React.useState({});\r\n\r\n // Filters\r\n const [dateFilter, setDateFilter] = React.useState([moment().year().valueOf()]);\r\n const [variableTypeFilter, setVariableTypeFilter] = React.useState(\"Withdrawal\");\r\n const [beneficialUseFilter, setBeneficialUseFilter] = React.useState(\"Agricultural\");\r\n const [waterSourceTypeFilter, setWaterSourceTypeFilter] = React.useState(\"Groundwater\");\r\n\r\n // Data selection\r\n const [dataSelection, setDataSelection] = React.useState(\"Counties\");\r\n\r\n // Re-Apply Filter On Change\r\n useEffect(() => {\r\n applyFilters();\r\n }, [dateFilter, variableTypeFilter, beneficialUseFilter, waterSourceTypeFilter]);\r\n\r\n // Load Highcharts Data\r\n useEffect(() => {\r\n loadHighChartsData();\r\n }, [timeSeriesData]);\r\n\r\n // Initialize Map / Render New Data\r\n useEffect(() => {\r\n let map = new mapboxgl.Map({\r\n container: mapContainerRef.current,\r\n style: 'mapbox://styles/mapbox/dark-v10',\r\n center: [-100, 40],\r\n zoom: 4\r\n });\r\n\r\n // Load Data\r\n loadData(map);\r\n\r\n // Load Map Interactivity\r\n loadPolygonOnClick(map);\r\n\r\n return () => map.remove();\r\n }, [aggregateData, dataSelection]);\r\n\r\n function loadData(map) {\r\n let data = aggregateData;\r\n let selection = dataSelection;\r\n let matchExpression = null;\r\n\r\n map.on('load', function () {\r\n map.addSource('WaDE_County', {\r\n type: 'vector',\r\n url: 'mapbox://amabdallah.3n378lz8'\r\n });\r\n\r\n map.addSource('WaDE_CustomBasin', {\r\n type: 'vector',\r\n url: 'mapbox://amabdallah.0oieb16i'\r\n });\r\n\r\n map.addSource('WaDE_DAUCO', {\r\n type: 'vector',\r\n url: 'mapbox://amabdallah.5493exu9'\r\n });\r\n\r\n map.addSource('WaDE_HUC8', {\r\n type: 'vector',\r\n url: 'mapbox://amabdallah.9liel9wd'\r\n });\r\n\r\n map.addSource('WaDE_HR', {\r\n type: 'vector',\r\n url: 'mapbox://amabdallah.9tzwqsd3'\r\n });\r\n\r\n // Build Match Expression for Color Interpolation\r\n if (typeof data.aggregationData != 'undefined' && typeof data.aggregationData[0] != 'undefined') {\r\n var matchExpression = ['match', ['get', 'UnitUUID']];\r\n\r\n data.aggregationData.forEach((agg) => {\r\n matchExpression.push(agg.reportingUnit.reportingUnitUuid, generateColor(data.minimumAmount, data.maximumAmount, agg.amount));\r\n });\r\n\r\n matchExpression.push('rgba(128, 128, 128, 0.25)');\r\n }\r\n\r\n loadShapeFile(map, selection, matchExpression);\r\n });\r\n };\r\n\r\n function loadShapeFile(map, selection, matchExpression) {\r\n var fillColor = matchExpression || 'rgb(128, 128, 128)';\r\n var layer = {\r\n 'id': 'rendered-shapes',\r\n 'type': 'fill',\r\n 'source': '',\r\n 'source-layer': '',\r\n 'paint': {\r\n 'fill-color': fillColor,\r\n 'fill-opacity': 0.75,\r\n 'fill-outline-color': '#fff'\r\n }\r\n };\r\n\r\n switch (selection) {\r\n case \"Counties\":\r\n layer['source'] = 'WaDE_County'\r\n layer['source-layer'] = 'WaDE_County-4nxlg1';\r\n break;\r\n case \"Basin\":\r\n layer['source'] = 'WaDE_CustomBasin';\r\n layer['source-layer'] = 'CustomBasin';\r\n break;\r\n case \"DAUCO\":\r\n layer['source'] = 'WaDE_DAUCO';\r\n layer['source-layer'] = 'WaDE_CustomBasin3_DAUCO-01d4fk';\r\n break;\r\n case \"HUC8\":\r\n layer['source'] = 'WaDE_HUC8';\r\n layer['source-layer'] = 'WaDE_HUC8';\r\n break;\r\n case \"HR\":\r\n layer['source'] = 'WaDE_HR';\r\n layer['source-layer'] = 'WaDE_CustomBasin2_HR';\r\n break;\r\n }\r\n\r\n map.addLayer(layer);\r\n };\r\n\r\n function loadPolygonOnClick(map) {\r\n map.on('click', function (e) {\r\n let feature = map.queryRenderedFeatures(e.point, ['rendered-shapes'])[0];\r\n\r\n if (typeof (feature) !== 'undefined') {\r\n fetchTimeSeriesData(feature.properties);\r\n\r\n var coordinates = getPolygonCentroid(feature.geometry.coordinates[0]);\r\n\r\n if (!isNaN(coordinates[0])) {\r\n var description = \"
UUID: \" + feature.properties.UnitUUID + \"
Name: \" + feature.properties.Name + \"
State: \" + feature.properties.StateCV + \"
\";\r\n\r\n new mapboxgl.Popup()\r\n .setLngLat(coordinates)\r\n .setHTML(description)\r\n .addTo(map);\r\n }\r\n }\r\n });\r\n };\r\n\r\n function loadHighChartsData() {\r\n var data = timeSeriesData || [];\r\n\r\n if (data.length == 0) {\r\n return;\r\n }\r\n\r\n var reportingUnitName = data[0].reportingUnit.reportingUnitName;\r\n var reportingUnitUuid = data[0].reportingUnit.reportingUnitUuid;\r\n\r\n var variableType = variableTypeFilter;\r\n var beneficialUse = beneficialUseFilter;\r\n var waterSourceType = waterSourceTypeFilter;\r\n\r\n var renderedData = data.map(agg => {\r\n return [parseInt(agg.reportYearCv), agg.amount]\r\n });\r\n\r\n var highChartsData = {\r\n chart: {\r\n type: 'line'\r\n },\r\n title: {\r\n text: variableType + ' Volume (Acre-Feet) For ' + reportingUnitName + \" (\" + reportingUnitUuid + \") \" + waterSourceType + \" for use in \" + beneficialUse\r\n },\r\n xAxis: {\r\n title: {\r\n text: 'Year'\r\n }\r\n },\r\n yAxis: {\r\n title: {\r\n text: 'Acre-Feet'\r\n }\r\n },\r\n legend: {\r\n enabled: false\r\n },\r\n series: [\r\n {\r\n \"data\": renderedData,\r\n \"name\": \"Acre-Feet / Year\"\r\n }\r\n ]\r\n };\r\n\r\n setHighChartsData(highChartsData);\r\n };\r\n\r\n function generateColor(min, max, aggAmount) {\r\n var mid = (min + max) / 2;\r\n\r\n if (aggAmount > mid) {\r\n var scale = 255 / (max - min);\r\n var value = 255 - (scale * aggAmount);\r\n return ('rgb(0, 0, ' + value + ')');\r\n } else if (aggAmount == mid) {\r\n return ('rgb(0, 0, 255)');\r\n } else if (aggAmount === 0) {\r\n return ('rgba(128, 128, 128, 0.25)')\r\n } else {\r\n var scale = 255 / (max - min);\r\n var value = 255 - (scale * aggAmount);\r\n return ('rgb(' + value + ', ' + value + ', 255)');\r\n }\r\n }\r\n\r\n function getPolygonCentroid(arr) {\r\n var minX, maxX, minY, maxY;\r\n for (var i = 0; i < arr.length; i++) {\r\n minX = (arr[i][0] < minX || minX == null) ? arr[i][0] : minX;\r\n maxX = (arr[i][0] > maxX || maxX == null) ? arr[i][0] : maxX;\r\n minY = (arr[i][1] < minY || minY == null) ? arr[i][1] : minY;\r\n maxY = (arr[i][1] > maxY || maxY == null) ? arr[i][1] : maxY;\r\n }\r\n return [(minX + maxX) / 2, (minY + maxY) / 2];\r\n };\r\n\r\n function filterVariableType(e) {\r\n setVariableTypeFilter(e.target.value);\r\n };\r\n\r\n function filterBeneficialUse(e) {\r\n setBeneficialUseFilter(e.target.value);\r\n };\r\n\r\n function filterWaterSourceType(e) {\r\n setWaterSourceTypeFilter(e.target.value);\r\n };\r\n\r\n async function changeDataSelection(e) {\r\n setDataSelection(e.target.value);\r\n };\r\n\r\n async function applyFilters() {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n var raw = JSON.stringify({\r\n ReportingUnitUuid: \"\",\r\n ReportYearCv: dateFilter[0].toString(),\r\n BeneficialUseCv: beneficialUseFilter,\r\n VariableCv: variableTypeFilter,\r\n WaterSourceTypeCV: waterSourceTypeFilter,\r\n ReportingUnitTypeCv: \"\"\r\n });\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // await fetch(\"http://localhost:7071/api/GetWaterAggregationByFilterValues\", requestOptions)\r\n await fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAggregationByFilterValues\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n console.log(JSON.parse(result));\r\n setAggregateData(JSON.parse(result));\r\n })\r\n .catch(error => console.log('error', error));\r\n };\r\n\r\n async function fetchTimeSeriesData(features) {\r\n if (features.UnitUUID) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n var raw = JSON.stringify({\r\n ReportingUnitUuid: features.UnitUUID,\r\n ReportYearCv: \"\",\r\n BeneficialUseCv: beneficialUseFilter,\r\n VariableCv: variableTypeFilter,\r\n WaterSourceTypeCV: waterSourceTypeFilter,\r\n ReportingUnitTypeCv: \"\"\r\n });\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // await fetch(\"http://localhost:7071/api/GetWaterAggregationTimeSeries\", requestOptions)\r\n await fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAggregationTimeSeries\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n var data;\r\n data = JSON.parse(result);\r\n data = data.sort((a, b) => a.reportYearCv.localeCompare(b.reportYearCv));\r\n setTimeSeriesData(data);\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {/* Filters */}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {/* Map */}\r\n
\r\n
\r\n {\r\n aggregateData.maximumAmount > 0 &&\r\n
\r\n
\r\n

Volume (AF)

\r\n
\r\n
\r\n {/*
{aggregateData.maximumAmount}
*/}\r\n
{aggregateData.maximumAmount.toLocaleString('en-US', { maximumFractionDigits: 2 })}
\r\n
\r\n {/*
{aggregateData.minimumAmount}
*/}\r\n
{aggregateData.minimumAmount.toLocaleString('en-US', { maximumFractionDigits: 2 })}
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n {/* Data */}\r\n
\r\n
\r\n {\r\n timeSeriesData.length > 0 &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AggregationMap;\r\n","import React from 'react';\r\nimport AllocationMap from './AllocationMap';\r\nimport AggregationMap from './AggregationMap';\r\nimport { Tabs, Tab } from 'react-bootstrap-tabs';\r\n\r\nfunction MapView() {\r\n return (\r\n
\r\n
\r\n

The Western States Water Data Access and Analysis Tool (WestDAAT) Prototype

\r\n
\r\n

Water Data Exchange (WaDE) Program, Western States Water Council

\r\n

Contact: Adel Abdallah, Program Manager, adelabdallah@wswc.utah.gov

\r\n

DISCLAIMER: This application is under construction, not for public use, and has not yet been fully approved by our member states. Individual states have unique water rights administration systems. Please check metadata before making any comparisons. The purpose of WaDE is to support regional water data and availability analysis. This data is not meant for localized decisions. Before drawing any conclusions or making comparisons, please consult the state's water rights agency and their used methods. Please also consult with the WaDE team before using this tool. We look forward to hearing your feedback.

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default MapView;\r\n","import React, { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport mapboxgl from 'mapbox-gl';\r\n\r\nimport './AllocationDetails.css';\r\n\r\nmapboxgl.accessToken =\r\n 'pk.eyJ1IjoiYW1hYmRhbGxhaCIsImEiOiJjazJnbno5ZHIwazVqM21xZzMwaWpsc2hqIn0.j6BmkJdp5O_9ITGm4Gwe0w';\r\n\r\nfunction AllocationDetails() {\r\n const location = useLocation();\r\n\r\n const [allocationData, setAllocationData] = React.useState(null);\r\n\r\n useEffect(() => {\r\n fetchAllocationData(location.pathname.split('/').pop());\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (allocationData) {\r\n let map = new mapboxgl.Map({\r\n container: 'allocationSiteMap',\r\n style: 'mapbox://styles/mapbox/dark-v10',\r\n center: [allocationData.longitude, allocationData.latitude],\r\n zoom: 5\r\n });\r\n\r\n // Load Data\r\n loadData(map);\r\n\r\n return () => map.remove();\r\n }\r\n }, [allocationData]);\r\n\r\n function loadData(map) {\r\n map.on('load', function () {\r\n map.resize();\r\n map.addSource('allocationSite', {\r\n 'type': 'geojson',\r\n 'data': {\r\n 'type': 'FeatureCollection',\r\n 'features': [\r\n {\r\n 'type': 'Feature',\r\n 'geometry': {\r\n 'type': 'Point',\r\n 'coordinates': [\r\n allocationData.longitude,\r\n allocationData.latitude\r\n ]\r\n }\r\n },\r\n ]\r\n }\r\n });\r\n\r\n map.addLayer({\r\n 'id': 'site',\r\n 'type': 'circle',\r\n 'source': 'allocationSite',\r\n 'paint': {\r\n 'circle-radius': 6,\r\n 'circle-color': '#B42222'\r\n },\r\n });\r\n });\r\n }\r\n\r\n function openJsonLd(id) {\r\n console.log(id);\r\n const win = window.open(\"/details/\" + id + \"/json-ld\", \"_blank\");\r\n win.focus();\r\n }\r\n\r\n function fetchAllocationData(allocationArr) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n var raw = JSON.stringify(allocationArr);\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // fetch(\"http://localhost:7071/api/GetWaterAllocationSiteDetails\", requestOptions)\r\n fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAllocationSiteDetails\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n let resultObj = JSON.parse(result);\r\n\r\n console.log(resultObj);\r\n if (resultObj.allocationBridgeSitesFacts.length === 0) {\r\n resultObj.allocationBridgeSitesFacts.push({\r\n allocationAmount: {\r\n allocationVolumeAf: 0,\r\n allocationFlowCfs: 0,\r\n organization: {\r\n organizationName: \"\",\r\n organizationWebsite: \"\",\r\n organizationContactName: \"\",\r\n organizationPhoneNumber: \"\",\r\n organizationContactEmail: \"\"\r\n },\r\n allocationBridgeBeneficialUsesFacts: [{\r\n beneficialUseCvNavigation: {\r\n waDename: \"\",\r\n }\r\n }]\r\n }\r\n });\r\n }\r\n\r\n setAllocationData(resultObj);\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

The Western States Water Data Access and Analysis Tool (WestDAAT) Prototype

\r\n
\r\n

Water Data Exchange (WaDE) Program, Western States Water Council

\r\n

Contact: Adel Abdallah, Program Manager, adelabdallah@wswc.utah.gov

\r\n

DISCLAIMER: This application is under construction, not for public use, and has not yet been fully approved by our member states. Individual states have unique water rights administration systems. Please check metadata before making any comparisons. The purpose of WaDE is to support regional water data and availability analysis. This data is not meant for localized decisions. Before drawing any conclusions or making comparisons, please consult the state's water rights agency and their used methods. Please also consult with the WaDE team before using this tool. We look forward to hearing your feedback.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n allocationData &&\r\n
\r\n
\r\n
\r\n

WaDE Site ID: {allocationData.siteUuid}

\r\n \r\n
\r\n
\r\n\r\n
\r\n {/* Site Info */}\r\n
\r\n

Site Information

\r\n
UUID : {allocationData.siteUuid}
\r\n
EPSG Code : {allocationData.epsgcodeCv}
\r\n
Name : {allocationData.siteName}
\r\n
POD or POU : {allocationData.podorPousite}
\r\n
\r\n {/* Organization Info */}\r\n
\r\n

Managing Organization

\r\n
Name : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.organization.organizationName}
\r\n \r\n
Contact Name : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.organization.organizationContactName}
\r\n
Contact Phone : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.organization.organizationPhoneNumber}
\r\n
Contact Email : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.organization.organizationContactEmail}
\r\n
\r\n {/* Water Source Info */}\r\n
\r\n

Water Source Info

\r\n
Water Source ID : {allocationData.waterSource.waterSourceUuid}
\r\n
Water Source Name : {allocationData.waterSource.waterSourceName}
\r\n
Water Source Type : {allocationData.waterSource.waterSourceTypeCv}
\r\n
\r\n {/* Allocation Info */}\r\n
\r\n

Allocation Info

\r\n
Flow (CFS) : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.allocationFlowCfs ?? \"Unavailable\"}
\r\n
Volume (AF) : {allocationData.allocationBridgeSitesFacts[0].allocationAmount.allocationVolumeAf ?? \"Unavailable\"}
\r\n
\r\n
\r\n {/* Allocation Info */}\r\n
\r\n

Allocation Information

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {allocationData.allocationBridgeSitesFacts.map((allocation) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
WaDE IDNative IDAllocation OwnerBeneficial Use
{allocation.allocationAmount.allocationAmountId}{allocation.allocationAmount.allocationNativeId}{allocation.allocationAmount.allocationOwner}{allocation.allocationAmount.allocationBridgeBeneficialUsesFacts[0].beneficialUseCvNavigation.waDename}
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AllocationDetails;\r\n","import React, { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport mapboxgl from 'mapbox-gl';\r\n\r\nimport './AllocationJsonLd.css';\r\n\r\nmapboxgl.accessToken =\r\n 'pk.eyJ1IjoiYW1hYmRhbGxhaCIsImEiOiJjazJnbno5ZHIwazVqM21xZzMwaWpsc2hqIn0.j6BmkJdp5O_9ITGm4Gwe0w';\r\n\r\nfunction AllocationJsonLd() {\r\n const location = useLocation();\r\n\r\n const [allocationData, setAllocationData] = React.useState(null);\r\n const [allocationJson, setAllocationJson] = React.useState(null);\r\n\r\n useEffect(() => {\r\n fetchAllocationData(location.pathname.split('/')[2]);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (allocationData) {\r\n let data = allocationData;\r\n\r\n let jsonLd = {\r\n \"@context\": [\r\n {\r\n \"schema\": \"https://schema.org/\",\r\n \"geojson\": \"https://purl.org/geojson/vocab#\",\r\n \"Feature\": \"geojson:Feature\",\r\n \"FeatureCollection\": \"geojson:FeatureCollection\",\r\n \"Point\": \"geojson:Point\",\r\n \"bbox\": {\r\n \"@container\": \"@list\",\r\n \"@id\": \"geojson:bbox\"\r\n },\r\n \"coordinates\": {\r\n \"@container\": \"@list\",\r\n \"@id\": \"geojson:coordinates\"\r\n },\r\n \"features\": {\r\n \"@container\": \"@set\",\r\n \"@id\": \"geojson:features\"\r\n },\r\n \"geometry\": \"geojson:geometry\",\r\n \"id\": \"@id\",\r\n \"properties\": \"geojson:properties\",\r\n \"type\": \"@type\"\r\n },\r\n {\r\n \"schema\": \"https://schema.org/\",\r\n \"id\": \"schema:name\",\r\n \"LINK\": \"schema:url\"\r\n },\r\n {\r\n \"uri\": \"@id\"\r\n }\r\n ],\r\n \"type\": \"Feature\",\r\n \"geometry\": {\r\n \"type\": \"Point\",\r\n \"coordinates\": [\r\n data.longitude,\r\n data.latitude\r\n ]\r\n },\r\n \"properties\": {\r\n \"fid\": 101913,\r\n \"StateID\": data.allocationBridgeSitesFacts[0].allocationAmount.organization.state,\r\n \"DataSourceOrganizationID\": data.allocationBridgeSitesFacts[0].allocationAmount.organization.organizationUuid,\r\n \"id\": \"https://geoconnex.us/wade/sites/\" + data.siteUuid,\r\n \"uri\": \"https://geoconnex.us/wade/sites/\" + data.siteUuid,\r\n \"LINK\": \"https://wade-api-qa.azure-api.net/v1/SiteAllocationAmounts?SiteUUID=\" + data.siteUuid\r\n },\r\n \"id\": \"https://geoconnex.us/wade/sites/\" + data.siteUuid\r\n };\r\n\r\n setAllocationJson(JSON.stringify(jsonLd));\r\n }\r\n }, [allocationData]);\r\n\r\n function fetchAllocationData(allocationArr) {\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"x-functions-key\", \"gbPgxR/Femue08YsLtEnmpAukABhpT26AxBPO6wavTkczFFoYJgdSA==\");\r\n\r\n var raw = JSON.stringify(allocationArr);\r\n\r\n var requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: raw,\r\n redirect: 'follow'\r\n };\r\n\r\n // fetch(\"http://localhost:7071/api/GetWaterAllocationSiteDetails\", requestOptions)\r\n fetch(\"https://mapboxprototypeapi.azurewebsites.net/api/GetWaterAllocationSiteDetails\", requestOptions)\r\n .then(response => response.text())\r\n .then(result => {\r\n setAllocationData(JSON.parse(result));\r\n })\r\n .catch(error => console.log('error', error));\r\n }\r\n\r\n return (\r\n <>\r\n {allocationJson &&\r\n
\r\n {allocationJson}\r\n
}\r\n \r\n );\r\n}\r\n\r\nexport default AllocationJsonLd;\r\n","import React from 'react';\r\nimport { Switch, Route } from 'react-router-dom';\r\n\r\nimport MapView from './MapView';\r\nimport AllocationDetails from './AllocationDetails';\r\nimport AllocationJsonLd from './AllocationJsonLd';\r\n\r\nfunction App() {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst Main = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport { BrowserRouter } from 'react-router-dom';\r\n\r\nimport './index.css';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\n\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n"],"sourceRoot":""}