{ "version": 3, "sources": [ "components/Header.jsx", "components/CustomToolBar.jsx", "hooks/useStateWaterYearSummary.js", "constants.js", "contexts/StateWaterYearSummaryContext.js", "components/StateWysOverview.jsx", "components/StationWaterYearSummaryList.jsx", "StateProvinceData.js", "components/StateWysSearchForm.jsx", "components/StateWaterYearSummary.jsx", "hooks/useStationWaterYearSummary.js", "contexts/StationWaterYearSummaryContext.js", "components/station/MonthlyPrecipTotalsChart.jsx", "components/station/AccumulatedStationPrecipChart.jsx", "components/station/DailyStationPrecipChart.jsx", "components/station/StationOverview.jsx", "components/station/StationMonthlySummaryList.jsx", "components/RenderCellExpand.jsx", "components/station/StationDailyPrecipObsList.jsx", "components/station/StationMultidayPrecipObsList.jsx", "components/station/StationDaysInWaterYear.jsx", "components/station/StationHailObsList.jsx", "components/station/StationWysNav.jsx", "components/station/StationWaterYearSummaryLongPage.jsx", "components/About.jsx", "components/Help.jsx", "components/Feedback.jsx", "App.js", "reportWebVitals.js", "index.js" ], "names": [ "useStyles", "makeStyles", "theme", "root2", "flexGrow", "root", "background", "border", "borderRadius", "boxShadow", "color", "buttonGroup", "marginRight", "spacing", "title", "Header", "classes", "history", "useHistory", "AppBar", "position", "className", "Toolbar", "href", "src", "alt", "height", "Typography", "variant", "Hidden", "smDown", "to", "onClick", "push", "style", "textDecoration", "only", "ButtonGroup", "Button", "window", "open", "CustomToolbar", "REQUEST_STATUS", "restUrl", "useStateWaterYearSummary", "start", "stop", "step", "intiStateAbbr", "initWaterYear", "useState", "stateWys", "setStateWys", "toUpperCase", "stateAbbr", "setStateAbbr", "waterYear", "setWaterYear", "requestStatus", "setRequestStatus", "error", "setError", "useEffect", "a", "axios", "get", "result", "data", "delayFunc", "WATER_YEAR_RANGE", "Array", "from", "length", "_", "i", "TRACE_VALUE", "NA_LABEL", "isWaterYearValid", "year", "NaN", "Number", "indexOf", "formatPrecip", "val", "toFixed", "formatSnow", "precipCellRenderer", "params", "value", "snowCellRenderer", "timeCellRenderer", "format", "hailStoneCellRenderer", "StateWaterYearSummaryContext", "createContext", "StateWaterYearSummaryProvider", "children", "useRouteMatch", "initStateAbbr", "Provider", "StateWysOverview", "useContext", "stateName", "state", "split", "join", "Card", "CardContent", "paddingLeft", "top", "right", "waterYearText", "Link", "minWidth", "minHeight", "lineHeight", "maxHeight", "backgroundColor", "fontWeight", "table", "columns", "field", "headerName", "width", "renderCell", "row", "link", "type", "hide", "StationWaterYearSummaryList", "Paper", "Container", "Skeleton", "animation", "Divider", "display", "density", "rows", "stationWaterYearTotals", "map", "wys", "id", "stationNumber", "defaultPageSize", "onRowClick", "param", "event", "components", "label", "country", "key", "COUNTRY_ABBRS", "formControl", "margin", "selectEmpty", "marginTop", "searchCard", "alignItems", "wrapper", "buttonSuccess", "buttonProgress", "left", "marginLeft", "getDefaultState", "abbr", "StateWysSearchForm", "initState", "setCountry", "setState", "showStateText", "setShowStateText", "usaStates", "filter", "x", "getDefaultShowStates", "showStates", "setShowStates", "stateProvinceData", "selectedWaterYear", "setSelectedWaterYear", "gutterBottom", "FormControl", "InputLabel", "Select", "labelId", "onChange", "target", "y", "MenuItem", "CardActions", "justifyContent", "size", "disabled", "selectedState", "CircularProgress", "StateWaterYearSummarNoProvider", "maxWidth", "StateWaterYearSummary", "location", "useLocation", "console", "log", "useStationWaterYearSummary", "initStationNumber", "setStationNumber", "stationWys", "setStationWys", "station", "StationWaterYearSummaryContext", "StationWaterYearSummaryProvider", "useParams", "initStation", "getMonthlyChartSeries", "series", "name", "stack", "shadow", "monthlyTotals", "dailyPrcpSum", "multidayPrcpSum", "yAxis", "totalSnowfall", "hasPrismData", "prismSeries", "prism30YrMonthlyAvgPrcp", "oct", "nov", "dec", "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "getMapOptions", "startYear", "chart", "credits", "enabled", "text", "subtitle", "stationName", "xAxis", "categories", "min", "opposite", "legend", "layout", "linearGradient", "stops", "align", "verticalAlign", "floating", "tooltip", "shared", "padding", "borderWidth", "borderColor", "plotOptions", "column", "pointPadding", "stacking", "MonthlyPrecipTotalsChart", "highcharts", "Highcharts", "options", "parseIso8601", "str", "parts", "dateParts", "timeSubParts", "Date", "UTC", "getDaysInWaterYearDailyPrcp", "dailyPrcpObservations", "obs", "prcp", "precipitation", "obsDateTime", "parseFloat", "getDaysInWaterYearMultidayPrcp", "multiDayPrcpObservations", "obsEndDateTime", "getDaysInWaterAccPrcp", "daysInWaterYear", "wyDay", "day", "accumulatedPrcp", "getDaysInWaterPrismAccPrcp", "list", "total", "defaultSeriesType", "pointFormat", "endOnTick", "labels", "formatter", "dateFormat", "this", "tickInterval", "max", "plotBands", "pointInterval", "pointStart", "lineWidth", "marker", "radius", "states", "hover", "pointWidth", "AccumulatedStationPrecipChart", "DailyStationPrecipChart", "blackBorder", "redBorder", "greenBorder", "overviewHeader", "marginBottom", "ScrollToAnchor", "hash", "anchor", "document", "querySelector", "scrollIntoView", "behavior", "block", "StationOverview", "Box", "pt", "Grid", "container", "item", "xs", "md", "elevation", "countyName", "latitude", "longitude", "padded", "StyledTableRow", "withStyles", "palette", "action", "TableRow", "StationMonthlySummaryList", "TableContainer", "Table", "TableHead", "TableCell", "whiteSpace", "TableBody", "index", "component", "scope", "shortMonthName", "prism30YrAvgPrcp", "totalPrcpSum", "daysCoveredByAllObservationsCount", "dailyPrcpObservationCount", "daysCoveredByMultidayPrcpObservationsCount", "multidayPrcpObservationCount", "daysWithPrcpCount", "daysWithTraceCount", "daysWithSnowfallCount", "daysWithSnowOnGroundCount", "reduce", "current", "overflow", "textOverflow", "GridCellExpand", "React", "props", "cellDiv", "cellValue", "anchorEl", "setAnchorEl", "showFullCell", "setShowFullCell", "showPopper", "setShowPopper", "addEventListener", "handleKeyDown", "removeEventListener", "nativeEvent", "ref", "onMouseEnter", "element", "isCurrentlyOverflown", "scrollHeight", "clientHeight", "scrollWidth", "clientWidth", "onMouseLeave", "Popper", "offsetHeight", "RenderCellExpand", "toString", "colDef", "computedWidth", "StationDailyPrecipObsList", "refDate", "valueFormatter", "substring", "precip", "precipitationIsTrace", "snowfall", "snowfallIsTrace", "snowfallSwe", "snowfallSweIsTrace", "snowDepth", "snowDepthIsTrace", "snowDepthSwe", "snowDepthSweIsTrace", "obsTime", "parse", "StationMultidayObsList", "dateTimeStamp", "autoHeight", "hideFooterPagination", "disableSelectionOnClick", "hideFooter", "dailyPrecipCell", "multidayCell", "missingCell", "conflictCell", "defaultCell", "GetDailyCellClass", "dailyPrcpValue", "multidayPrcp", "dailyPrcp", "GetMultidayCellClass", "CreateDaysInWyTable", "months", "monthsText", "includes", "StationDaysInWaterYear", "colSpan", "lg", "StationHailObsList", "hailObservations", "StationWysNav", "stationListUrl", "startIcon", "smooth", "require", "bottom", "ScrollTop", "trigger", "useScrollTrigger", "undefined", "disableHysteresis", "threshold", "Zoom", "in", "ownerDocument", "role", "StationWaterYearSummaryNoProvider", "mb", "mt", "StationMultidayPrecipObsList", "Fab", "StationWaterYearSummary", "About", "media", "Help", "direction", "CardActionArea", "CardMedia", "image", "Feedback", "frameborder", "marginwidth", "marginheight", "allowfullscreen", "webkitallowfullscreen", "mozallowfullscreen", "msallowfullscreen", "App", "xl", "path", "reportWebVitals", "onPerfEntry", "Function", "then", "getCLS", "getFID", "getFCP", "getLCP", "getTTFB", "createTheme", "primary", "main", "secondary", "ReactDOM", "render", "StrictMode", "ThemeProvider", "getElementById" ], "mappings": "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", "file": "static/js/main.948379b0.chunk.js", "sourcesContent": [ "import Typography from \"@material-ui/core/Typography\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ButtonGroup from \"@material-ui/core/ButtonGroup\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport Hidden from '@material-ui/core/Hidden';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root2: {\r\n flexGrow: 1,\r\n },\r\n root: {\r\n flexGrow: 1,\r\n background: \"linear-gradient(45deg, #ececec 30%, #b0c4de 90%)\", //dark blue #0C2E82, light blue #b0c4de\r\n border: 0,\r\n borderRadius: 3,\r\n boxShadow: \"0 3px 5px 2px rgba(100, 100, 100, .3)\",\r\n color: \"white\",\r\n },\r\n buttonGroup: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n}));\r\n\r\nfunction Header() {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n history.push(\"/\")} style={{color:\"inherit\", textDecoration:\"none\"}}>CoCoRaHS Water Year Summary Reports\r\n \r\n \r\n history.push(\"/\")} style={{color:\"inherit\", textDecoration:\"none\"}}>CoCoRaHS WYS Reports\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Header;\r\n", "import {\r\n GridToolbarContainer,\r\n GridToolbarColumnsButton,\r\n GridToolbarFilterButton\r\n } from '@material-ui/data-grid';\r\n\r\nfunction CustomToolbar() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n export default CustomToolbar;", "import { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nexport const REQUEST_STATUS = {\r\n LOADING: \"loading\",\r\n SUCCESS: \"success\",\r\n FAILURE: \"failure\",\r\n };\r\n\r\nconst restUrl = \"https://wys-api.cocorahs.org/api/StateWysJson\";\r\n\r\nfunction useStateWaterYearSummary(intiStateAbbr, initWaterYear) {\r\n const [stateWys, setStateWys] = useState();\r\n const [stateAbbr, setStateAbbr] = useState(typeof(intiStateAbbr) !== 'undefined' ? intiStateAbbr.toUpperCase() : null);\r\n const [waterYear, setWaterYear] = useState(typeof(initWaterYear) !== 'undefined' ? initWaterYear : 2021);\r\n const [requestStatus, setRequestStatus] = useState(REQUEST_STATUS.SUCCESS);\r\n const [error, setError] = useState(\"\");\r\n\r\n useEffect(() => {\r\n async function delayFunc() {\r\n try {\r\n const result = await axios.get(`${restUrl}?state=${stateAbbr}&year=${waterYear}`);\r\n setRequestStatus(REQUEST_STATUS.SUCCESS);\r\n setStateWys(result.data);\r\n } catch (e) {\r\n setError(`An error occurred trying to retrieve the ${waterYear} water year summary reports for ${stateAbbr}.`);\r\n setRequestStatus(REQUEST_STATUS.FAILURE);\r\n }\r\n }\r\n if(stateAbbr && waterYear) {\r\n setRequestStatus(REQUEST_STATUS.LOADING);\r\n delayFunc();\r\n }\r\n }, [stateAbbr, waterYear]);\r\n/*\r\n useEffect(() => {\r\n const fetchStateWys = async () => {\r\n const rsp = await fetch(\"/stateWys_CO_2020.json\");\r\n const wys = await rsp.json();\r\n setStateWys(wys);\r\n }\r\n fetchStateWys();\r\n }, []);\r\n*/\r\n \r\n return {\r\n stateWys,\r\n requestStatus,\r\n error,\r\n stateAbbr,\r\n setStateAbbr,\r\n waterYear,\r\n setWaterYear\r\n };\r\n}\r\n\r\n\r\n\r\nexport default useStateWaterYearSummary;", "import { format } from \"date-fns\";\r\n\r\n// Sequence generator function (commonly referred to as \"range\", e.g. Clojure, PHP etc)\r\nconst range = (start, stop, step) =>\r\n Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);\r\n\r\nconst FIRST_WATER_YEAR = 1999;\r\nconst CURRENT_WATER_YEAR = 2025;\r\nconst WATER_YEAR_RANGE = range(FIRST_WATER_YEAR, 2025, 1);\r\nconst TRACE_VALUE = 0.000001;\r\nconst TRACE_LABEL = \"T\";\r\nconst NA_LABEL = \"NA\";\r\n\r\nconst isWaterYearValid = (year) => {\r\n if (!year) {\r\n return false;\r\n }\r\n if (Number(year) === NaN) {\r\n return false;\r\n }\r\n if (WATER_YEAR_RANGE.indexOf(Number(year)) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst formatPrecip = (val) => {\r\n return val === null ? NA_LABEL : val.toFixed(2);\r\n};\r\n\r\nconst formatSnow = (val) => {\r\n return val ? val.toFixed(1) : \"0.0\";\r\n};\r\n\r\nconst precipCellRenderer = (params) => {\r\n if (params.value === null) {\r\n return <>{NA_LABEL};\r\n }\r\n if (params.value === TRACE_VALUE) {\r\n return <>{TRACE_LABEL};\r\n }\r\n return <>{formatPrecip(params.value)};\r\n};\r\n\r\nconst snowCellRenderer = (params) => {\r\n if (params.value === null) {\r\n return <>{NA_LABEL};\r\n }\r\n if (params.value === TRACE_VALUE) {\r\n return <>{TRACE_LABEL};\r\n }\r\n return <>{formatSnow(params.value)};\r\n};\r\n\r\nconst dateCellRenderer = (params) => {\r\n return <>{format(params.value, \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")};\r\n};\r\n\r\nconst timeCellRenderer = (params) => {\r\n //return <>{params.value.toString()};\r\n return <>{format(params.value, \"HH:mm aaa\")};\r\n};\r\n\r\nconst hailStoneCellRenderer = (params) => {\r\n if (params.value === null) {\r\n return <>{NA_LABEL};\r\n }\r\n if (params.value < 0) {\r\n return <>{NA_LABEL};\r\n }\r\n return <>{params.value.toFixed(2)};\r\n};\r\n\r\nconst DT_SEPERATOR = \"T\";\r\nconst DP_SEPERATOR = \"-\";\r\nconst TIME_SEPERATOR = \":\";\r\nconst SEC_SEPERATOR = \".\";\r\nconst TZ_SEPERATOR = \"Z\";\r\nfunction parseIso8601(str) {\r\n // we assume str is a UTC date ending in 'Z'\r\n\r\n var parts = str.split(DT_SEPERATOR),\r\n dateParts = parts[0].split(DP_SEPERATOR),\r\n timeParts = parts[1].split(TZ_SEPERATOR),\r\n timeSubParts = timeParts[0].split(TIME_SEPERATOR),\r\n timeSecParts = timeSubParts[2].split(SEC_SEPERATOR),\r\n timeHours = Number(timeSubParts[0]);\r\n\r\n return Date.UTC(\r\n Number(dateParts[0]),\r\n Number(dateParts[1]) - 1,\r\n Number(dateParts[2])\r\n );\r\n}\r\n\r\nexport {\r\n range,\r\n FIRST_WATER_YEAR,\r\n CURRENT_WATER_YEAR,\r\n WATER_YEAR_RANGE,\r\n isWaterYearValid,\r\n formatPrecip,\r\n formatSnow,\r\n TRACE_VALUE,\r\n NA_LABEL,\r\n precipCellRenderer,\r\n parseIso8601,\r\n dateCellRenderer,\r\n timeCellRenderer,\r\n snowCellRenderer,\r\n hailStoneCellRenderer,\r\n};\r\n", "import React, { createContext, useEffect } from \"react\";\r\nimport { useParams, useRouteMatch } from \"react-router-dom\";\r\nimport useStateWaterYearSummary from \"../hooks/useStateWaterYearSummary\";\r\nimport { CURRENT_WATER_YEAR, isWaterYearValid } from '../constants'\r\n\r\nconst StateWaterYearSummaryContext = createContext();\r\n\r\nfunction StateWaterYearSummaryProvider({ children }) {\r\n let { stateAbbr: initStateAbbr, waterYear: initWaterYear } = useRouteMatch().params; // useParams();\r\n\r\n // validate water year\r\n if (!(isWaterYearValid(initWaterYear))) {\r\n initWaterYear = CURRENT_WATER_YEAR;\r\n }\r\n const {\r\n stateWys,\r\n setWaterYear,\r\n setStateAbbr,\r\n stateAbbr,\r\n waterYear,\r\n requestStatus,\r\n error,\r\n } = useStateWaterYearSummary(initStateAbbr, initWaterYear);\r\n\r\n useEffect(() => {\r\n setWaterYear(initWaterYear);\r\n setStateAbbr(initStateAbbr);\r\n }, [initStateAbbr, initWaterYear]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport { StateWaterYearSummaryContext, StateWaterYearSummaryProvider };\r\n", "import { Card, CardContent, Typography } from \"@material-ui/core\";\r\nimport React, { useContext } from \"react\";\r\nimport { StateWaterYearSummaryContext } from \"../contexts/StateWaterYearSummaryContext\";\r\nimport Link from \"@material-ui/core/Link\";\r\n\r\nfunction StateWysOverview() {\r\n const { stateWys } = useContext(StateWaterYearSummaryContext);\r\n\r\n if (!stateWys) {\r\n return
Loading...
;\r\n }\r\n\r\n const search = \" \";\r\n const replaceWith = \"-\";\r\n const stateName = stateWys.state.stateName.split(search).join(replaceWith);\r\n // can't us replaceAll in IE 11\r\n // stateWys.state.stateName.replaceAll(' ', '-')\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Station Water Year Summary Reports for {stateWys.state.stateName}{\" \"}\r\n {stateWys.waterYearText}\r\n \r\n \r\n \r\n Download as Excel File\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default StateWysOverview;\r\n", "import React, { useContext } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { DataGrid } from \"@material-ui/data-grid\";\r\nimport CustomToolbar from './CustomToolBar';\r\nimport { StateWaterYearSummaryContext } from \"../contexts/StateWaterYearSummaryContext\";\r\nimport StateWysOverview from \"./StateWysOverview\";\r\nimport { REQUEST_STATUS } from \"../hooks/useStateWaterYearSummary\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Container from \"@material-ui/core/Container\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport { precipCellRenderer, snowCellRenderer } from \"../constants\"\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 650,\r\n minHeight: 700,\r\n \".MuiDataGrid-cell\": {\r\n lineHeight: \"30px !important\",\r\n minHeight: \"30px !important\",\r\n maxHeight: \"30px !important\",\r\n },\r\n \"& .super-app-theme--cell\": {\r\n lineHeight: \"30px !important\",\r\n minHeight: \"30px !important\",\r\n maxHeight: \"30px !important\",\r\n },\r\n \"& .super-app-theme--cell2\": {\r\n backgroundColor: \"rgba(224, 183, 60, 0.55)\",\r\n color: \"#1a3e72\",\r\n fontWeight: \"600\",\r\n },\r\n \"& .super-app.negative\": {\r\n backgroundColor: \"rgba(157, 255, 118, 0.49)\",\r\n color: \"#1a3e72\",\r\n fontWeight: \"600\",\r\n },\r\n \"& .super-app.positive\": {\r\n backgroundColor: \"#d47483\",\r\n color: \"#1a3e72\",\r\n fontWeight: \"600\",\r\n },\r\n },\r\n table: {\r\n minWidth: 650,\r\n minHeight: 600,\r\n },\r\n});\r\n\r\n/*\r\n {\"stationNumber\":\"CO-AD-119\",\"stationName\":\"Thornton 1.9 ESE\",\"latitude\":39.8786,\"longitude\":-104.9246,\"stateCode\":8,\"countyCode\":1,\r\n \"stateName\":\"Colorado\",\"stateAbbr\":\"CO\",\"countyName\":\"Adams\",\"countyAbbr\":\"AD\",\"elevation\":5083,\"firstObsDate\":\"2019-10-01T00:00:00\",\r\n \"lastObsDate\":\"2019-12-05T00:00:00\",\"dailyPrecipObsCount\":61,\"dailyPrecipSum\":1.83,\"multidayPrecipSum\":0.00,\"totalPrecipSum\":1.83,\r\n \"daysWithPrecip\":8,\"daysWithTrace\":0,\"snowfallSum\":20.10,\"daysCoveredByMultidayObs\":0,\"daysWithSnowfall\":5,\"daysWithSnowOnGround\":0,\r\n \"hailObsCount\":0,\"multidayPrecipObsCount\":0,\"maxDailyPrecip\":0.00,\"maxDailySnowfall\":7.10,\"maxMultidayPrecip\":0.00,\"prism30YrAvgPrcp\":null,\"daysCoveredByAllPrecipObs\":61}\r\n \r\n */\r\n // cellClassName: \"super-app-theme--cell\",\r\n \r\n\r\nconst columns = [\r\n {\r\n field: \"stationNumber\",\r\n headerName: \"Station Number\",\r\n width: 180,\r\n renderCell: (params) => (\r\n {params.value}\r\n ),\r\n },\r\n {\r\n field: \"stationName\",\r\n headerName: \"Station Name\",\r\n width: 170,\r\n },\r\n {\r\n field: \"daysCoveredByAllPrecipObs\",\r\n headerName: \"Days Covered by All Obs\",\r\n type: \"number\",\r\n width: 120,\r\n },\r\n {\r\n field: \"totalPrecipSum\",\r\n headerName: \"Precip Sum\",\r\n type: \"number\",\r\n width: 150,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"snowfallSum\",\r\n headerName: \"Snowfall Sum\",\r\n type: \"number\",\r\n width: 165,\r\n renderCell: snowCellRenderer\r\n },\r\n {\r\n field: \"dailyPrecipObsCount\",\r\n headerName: \"Daily Obs Count\",\r\n type: \"number\",\r\n width: 150,\r\n },\r\n {\r\n field: \"multidayPrecipObsCount\",\r\n headerName: \"Multiday Obs Count\",\r\n type: \"number\",\r\n width: 180,\r\n },\r\n {\r\n field: \"hailObsCount\",\r\n headerName: \"Hail Obs Count\",\r\n type: \"number\",\r\n width: 150,\r\n },\r\n {\r\n field: \"stateName\",\r\n headerName: \"State\",\r\n width: 170,\r\n hide: true\r\n },\r\n {\r\n field: \"countyName\",\r\n headerName: \"County\",\r\n width: 170,\r\n hide: true\r\n },\r\n {\r\n field: \"maxDailyPrecip\",\r\n headerName: \"Max Daily Precip\",\r\n type: \"number\",\r\n width: 160,\r\n hide: true,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"maxDailySnowfall\",\r\n headerName: \"Max Snowfall\",\r\n type: \"number\",\r\n width: 160,\r\n hide: true,\r\n renderCell: snowCellRenderer\r\n },\r\n {\r\n field: \"maxMultidayPrecip\",\r\n headerName: \"Max Multiday Precip\",\r\n type: \"number\",\r\n width: 160,\r\n hide: true,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"daysWithSnowfall\",\r\n headerName: \"Days with Snowfall\",\r\n type: \"number\",\r\n width: 160,\r\n hide: true\r\n },\r\n {\r\n field: \"daysWithSnowOnGround\",\r\n headerName: \"Days with Snow on Ground\",\r\n type: \"number\",\r\n width: 160,\r\n hide: true\r\n },\r\n];\r\n\r\nfunction StationWaterYearSummaryList() {\r\n const classes = useStyles();\r\n const { stateWys, requestStatus } = useContext(StateWaterYearSummaryContext);\r\n const history = useHistory();\r\n\r\n const handleRowClick = (param, event) => {\r\n history.push(`/station/${param.id}/${stateWys.waterYear}`);\r\n };\r\n\r\n if (requestStatus && requestStatus === REQUEST_STATUS.LOADING) {\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 if (!stateWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n return { ...wys, \r\n id: wys.stationNumber,\r\n link: `/station/${wys.stationNumber}/${stateWys.waterYear}` };\r\n })}\r\n columns={columns}\r\n defaultPageSize={100}\r\n onRowClick={handleRowClick}\r\n components={{\r\n Toolbar: CustomToolbar,\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n // onRowClick={handleRowClick}\r\n );\r\n}\r\n\r\nexport default StationWaterYearSummaryList;\r\n", "export const data = [\r\n { label: \"All Districts\", country: \"BHS\", key: \"BHS\" },\r\n { label: \"Acklins Islands\", country: \"BHS\", key: \"AK\" },\r\n { label: \"Berry Islands\", country: \"BHS\", key: \"BY\" },\r\n { label: \"Bimini and Cat Cay\", country: \"BHS\", key: \"BI\" },\r\n { label: \"Black Point\", country: \"BHS\", key: \"BP\" },\r\n { label: \"Cat Island\", country: \"BHS\", key: \"CI\" },\r\n { label: \"Central Abaco\", country: \"BHS\", key: \"CO\" },\r\n { label: \"Central Andros\", country: \"BHS\", key: \"CS\" },\r\n { label: \"Central Eleuthera\", country: \"BHS\", key: \"CE\" },\r\n { label: \"City of Freeport\", country: \"BHS\", key: \"FP\" },\r\n { label: \"Crooked Island and Long Cay\", country: \"BHS\", key: \"CK\" },\r\n { label: \"East Grand Bahama\", country: \"BHS\", key: \"EG\" },\r\n { label: \"Exuma\", country: \"BHS\", key: \"EX\" },\r\n { label: \"Grand Cay\", country: \"BHS\", key: \"GC\" },\r\n { label: \"Harbour Island\", country: \"BHS\", key: \"HI\" },\r\n { label: \"Hope Town\", country: \"BHS\", key: \"HT\" },\r\n { label: \"Inagua\", country: \"BHS\", key: \"IN\" },\r\n { label: \"Long Island\", country: \"BHS\", key: \"LI\" },\r\n { label: \"Mangrove Cay\", country: \"BHS\", key: \"MC\" },\r\n { label: \"Mayaguana\", country: \"BHS\", key: \"MG\" },\r\n { label: \"Moore's Island\", country: \"BHS\", key: \"MI\" },\r\n { label: \"New Providence\", country: \"BHS\", key: \"NP\" },\r\n { label: \"North Abaco\", country: \"BHS\", key: \"NO\" },\r\n { label: \"North Andros\", country: \"BHS\", key: \"NS\" },\r\n { label: \"North Eleuthera\", country: \"BHS\", key: \"NE\" },\r\n { label: \"Ragged Island\", country: \"BHS\", key: \"RI\" },\r\n { label: \"Rum Cay\", country: \"BHS\", key: \"RC\" },\r\n { label: \"San Salvador\", country: \"BHS\", key: \"SS\" },\r\n { label: \"South Abaco\", country: \"BHS\", key: \"SO\" },\r\n { label: \"South Andros\", country: \"BHS\", key: \"SA\" },\r\n { label: \"South Eleuthera\", country: \"BHS\", key: \"SE\" },\r\n { label: \"Spanish Wells\", country: \"BHS\", key: \"SW\" },\r\n { label: \"West Grand Bahama\", country: \"BHS\", key: \"WG\" },\r\n { label: \"All Provinces\", country: \"CAN\", key: \"CAN\" },\r\n { label: \"Alberta\", country: \"CAN\", key: \"AB\" },\r\n { label: \"British Columbia\", country: \"CAN\", key: \"BC\" },\r\n { label: \"Manitoba\", country: \"CAN\", key: \"MB\" },\r\n { label: \"New Brunswick\", country: \"CAN\", key: \"NB\" },\r\n { label: \"Newfoundland and Labrador\", country: \"CAN\", key: \"NL\" },\r\n { label: \"Northwest Territories\", country: \"CAN\", key: \"NT\" },\r\n { label: \"Nova Scotia\", country: \"CAN\", key: \"NS\" },\r\n { label: \"Ontario\", country: \"CAN\", key: \"ON\" },\r\n { label: \"Prince Edward Island\", country: \"CAN\", key: \"PE\" },\r\n { label: \"Quebec\", country: \"CAN\", key: \"QC\" },\r\n { label: \"Saskatchewan\", country: \"CAN\", key: \"SK\" },\r\n { label: \"Yukon\", country: \"CAN\", key: \"YT\" },\r\n { label: \"Select State\", country: \"USA\", key: \"USA\" },\r\n { label: \"Alabama\", country: \"USA\", key: \"AL\" },\r\n { label: \"Alaska\", country: \"USA\", key: \"AK\" },\r\n { label: \"Arizona\", country: \"USA\", key: \"AZ\" },\r\n { label: \"Arkansas\", country: \"USA\", key: \"AR\" },\r\n { label: \"California\", country: \"USA\", key: \"CA\" },\r\n { label: \"Colorado\", country: \"USA\", key: \"CO\" },\r\n { label: \"Connecticut\", country: \"USA\", key: \"CT\" },\r\n { label: \"Delaware\", country: \"USA\", key: \"DE\" },\r\n { label: \"District of Columbia\", country: \"USA\", key: \"DC\" },\r\n { label: \"Florida\", country: \"USA\", key: \"FL\" },\r\n { label: \"Georgia\", country: \"USA\", key: \"GA\" },\r\n { label: \"Guam\", country: \"USA\", key: \"GU\" },\r\n { label: \"Hawaii\", country: \"USA\", key: \"HI\" },\r\n { label: \"Idaho\", country: \"USA\", key: \"ID\" },\r\n { label: \"Illinois\", country: \"USA\", key: \"IL\" },\r\n { label: \"Indiana\", country: \"USA\", key: \"IN\" },\r\n { label: \"Iowa\", country: \"USA\", key: \"IA\" },\r\n { label: \"Kansas\", country: \"USA\", key: \"KS\" },\r\n { label: \"Kentucky\", country: \"USA\", key: \"KY\" },\r\n { label: \"Louisiana\", country: \"USA\", key: \"LA\" },\r\n { label: \"Maine\", country: \"USA\", key: \"ME\" },\r\n { label: \"Maryland\", country: \"USA\", key: \"MD\" },\r\n { label: \"Massachusetts\", country: \"USA\", key: \"MA\" },\r\n { label: \"Michigan\", country: \"USA\", key: \"MI\" },\r\n { label: \"Minnesota\", country: \"USA\", key: \"MN\" },\r\n { label: \"Mississippi\", country: \"USA\", key: \"MS\" },\r\n { label: \"Missouri\", country: \"USA\", key: \"MO\" },\r\n { label: \"Montana\", country: \"USA\", key: \"MT\" },\r\n { label: \"Nebraska\", country: \"USA\", key: \"NE\" },\r\n { label: \"Nevada\", country: \"USA\", key: \"NV\" },\r\n { label: \"New Hampshire\", country: \"USA\", key: \"NH\" },\r\n { label: \"New Jersey\", country: \"USA\", key: \"NJ\" },\r\n { label: \"New Mexico\", country: \"USA\", key: \"NM\" },\r\n { label: \"New York\", country: \"USA\", key: \"NY\" },\r\n { label: \"North Carolina\", country: \"USA\", key: \"NC\" },\r\n { label: \"North Dakota\", country: \"USA\", key: \"ND\" },\r\n { label: \"Northern Mariana Islands\", country: \"USA\", key: \"MP\" },\r\n { label: \"Ohio\", country: \"USA\", key: \"OH\" },\r\n { label: \"Oklahoma\", country: \"USA\", key: \"OK\" },\r\n { label: \"Oregon\", country: \"USA\", key: \"OR\" },\r\n { label: \"Pennsylvania\", country: \"USA\", key: \"PA\" },\r\n { label: \"Puerto Rico\", country: \"USA\", key: \"PR\" },\r\n { label: \"Rhode Island\", country: \"USA\", key: \"RI\" },\r\n { label: \"South Carolina\", country: \"USA\", key: \"SC\" },\r\n { label: \"South Dakota\", country: \"USA\", key: \"SD\" },\r\n { label: \"Tennessee\", country: \"USA\", key: \"TN\" },\r\n { label: \"Texas\", country: \"USA\", key: \"TX\" },\r\n { label: \"Utah\", country: \"USA\", key: \"UT\" },\r\n { label: \"Vermont\", country: \"USA\", key: \"VT\" },\r\n { label: \"Virgin Islands\", country: \"USA\", key: \"VI\" },\r\n { label: \"Virginia\", country: \"USA\", key: \"VA\" },\r\n { label: \"Washington\", country: \"USA\", key: \"WA\" },\r\n { label: \"West Virginia\", country: \"USA\", key: \"WV\" },\r\n { label: \"Wisconsin\", country: \"USA\", key: \"WI\" },\r\n { label: \"Wyoming\", country: \"USA\", key: \"WY\" },\r\n];\r\n", "import React, { useState, useContext, useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport { Select, CircularProgress } from \"@material-ui/core/\";\r\nimport { data } from \"../StateProvinceData\";\r\nimport { StateWaterYearSummaryContext } from \"../contexts/StateWaterYearSummaryContext\";\r\nimport { REQUEST_STATUS } from \"../hooks/useStateWaterYearSummary\";\r\nimport { green } from '@material-ui/core/colors';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { WATER_YEAR_RANGE } from \"../constants\"\r\n\r\nimport {\r\n Grid,\r\n Container,\r\n Typography,\r\n Box,\r\n Card,\r\n CardContent,\r\n CardActions,\r\n Button,\r\n} from \"@material-ui/core\";\r\n\r\nexport const COUNTRY_ABBRS = {\r\n USA: \"USA\",\r\n BHS: \"BHS\",\r\n CAN: \"CAN\",\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n searchCard: { display: \"inline-block\" },\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: 'relative',\r\n },\r\n buttonSuccess: {\r\n\r\n },\r\n buttonProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n}));\r\n\r\nfunction getDefaultCountry(abbr) {\r\n if (abbr === COUNTRY_ABBRS.CAN || abbr === COUNTRY_ABBRS.BHS) {\r\n return abbr;\r\n } else {\r\n return COUNTRY_ABBRS.USA;\r\n }\r\n}\r\n\r\nfunction getDefaultState(abbr) {\r\n if (!abbr) {\r\n return COUNTRY_ABBRS.USA;\r\n } else if (abbr === COUNTRY_ABBRS.CAN || abbr === COUNTRY_ABBRS.BHS) {\r\n return COUNTRY_ABBRS.USA;\r\n } else {\r\n return abbr;\r\n }\r\n}\r\n\r\nfunction getDefaultShowStates(abbr) {\r\n if (abbr === COUNTRY_ABBRS.CAN || abbr === COUNTRY_ABBRS.BHS) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nfunction StateWysSearchForm() {\r\n const {\r\n stateAbbr,\r\n waterYear,\r\n setStateAbbr,\r\n setWaterYear,\r\n requestStatus,\r\n error,\r\n } = useContext(StateWaterYearSummaryContext);\r\n const history = useHistory();\r\n\r\n let initState = getDefaultState(stateAbbr);\r\n const classes = useStyles();\r\n const [country, setCountry] = useState(getDefaultCountry(stateAbbr));\r\n const [state, setState] = useState(initState);\r\n const [showStateText, setShowStateText] = useState(initState === COUNTRY_ABBRS.USA);\r\n const usaStates = data.filter(function (x) {\r\n return x.country == \"USA\";\r\n });\r\n const [showStates, setShowStates] = useState(\r\n getDefaultShowStates(stateAbbr)\r\n );\r\n const [stateProvinceData] = useState(usaStates);\r\n const [selectedWaterYear, setSelectedWaterYear] = useState(waterYear);\r\n\r\n\r\n const handleCountryChange = (event) => {\r\n setCountry(event.target.value);\r\n setShowStates(event.target.value === COUNTRY_ABBRS.USA);\r\n setShowStateText((event.target.value === COUNTRY_ABBRS.USA) && (state === COUNTRY_ABBRS.USA));\r\n };\r\n\r\n const handleStateChange = (event) => {\r\n setState(event.target.value);\r\n setShowStateText(event.target.value === COUNTRY_ABBRS.USA);\r\n };\r\n\r\n const handleWaterYearChange = (event) => {\r\n setSelectedWaterYear(event.target.value);\r\n };\r\n\r\n const onSearchClick = (event) => {\r\n let selectedState = state;\r\n // if CAN or BHS, set state to country code\r\n if (country !== COUNTRY_ABBRS.USA) {\r\n selectedState = country;\r\n setShowStateText(false);\r\n }\r\n\r\n // do not run if the entire US is selected\r\n if (selectedState !== COUNTRY_ABBRS.USA) {\r\n setStateAbbr(selectedState);\r\n setWaterYear(selectedWaterYear);\r\n history.push(`/${selectedState}/${selectedWaterYear}`);\r\n } else {\r\n setShowStateText(true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setShowStateText(stateAbbr === COUNTRY_ABBRS.USA);\r\n setSelectedWaterYear(waterYear);\r\n setState(getDefaultState(stateAbbr));\r\n }, [stateAbbr, waterYear]);\r\n\r\n return (\r\n \r\n \r\n \r\n Search Water Year Summary Reports\r\n \r\n \r\n Water Year\r\n \r\n {WATER_YEAR_RANGE.map((y) => (\r\n \r\n {y}\r\n \r\n ))}\r\n \r\n \r\n \r\n Country\r\n \r\n USA\r\n Canada\r\n Bahamas\r\n \r\n \r\n {showStates == true && (\r\n \r\n State\r\n \r\n {stateProvinceData.map(({ label, key }) => (\r\n \r\n {label}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n \r\n {showStateText && Select a State to Search On}\r\n
\r\n \r\n Search\r\n \r\n {(requestStatus === REQUEST_STATUS.LOADING) && }\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default StateWysSearchForm;\r\n", "import React, { useEffect } from \"react\"\r\nimport StationWaterYearSummaryList from \"./StationWaterYearSummaryList\";\r\nimport StateWysSearchForm from \"./StateWysSearchForm\";\r\nimport { StateWaterYearSummaryProvider } from '../contexts/StateWaterYearSummaryContext';\r\nimport { Container } from \"@material-ui/core\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nfunction StateWaterYearSummary({ children}) {\r\n let location = useLocation();\r\n\r\n useEffect(() => {\r\n console.log(\"state location change\")\r\n }, [location]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nfunction StateWaterYearSummarNoProvider({ children}) {\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n { children}\r\n \r\n )\r\n}\r\n\r\nexport default StateWaterYearSummary;", "import { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nexport const REQUEST_STATUS = {\r\n LOADING: \"loading\",\r\n SUCCESS: \"success\",\r\n FAILURE: \"failure\",\r\n };\r\n\r\nconst restUrl = \"https://wys-api.cocorahs.org/api/StationWysJson\";\r\n\r\nfunction useStationWaterYearSummary(initStationNumber, initWaterYear) {\r\n const [stationNumber, setStationNumber] = useState(typeof(initStationNumber) !== 'undefined' ? initStationNumber.toUpperCase() : null);\r\n const [waterYear, setWaterYear] = useState(typeof(initWaterYear) !== 'undefined' ? initWaterYear : 2021);\r\n const [requestStatus, setRequestStatus] = useState(REQUEST_STATUS.SUCCESS);\r\n const [error, setError] = useState(\"\");\r\n const [stationWys, setStationWys] = useState();\r\n // todo: fetch WYS based on station number and water year\r\n\r\n useEffect(() => {\r\n async function delayFunc() {\r\n try {\r\n const result = await axios.get(`${restUrl}?stationnumber=${stationNumber}&year=${waterYear}`);\r\n\r\n if(result.data.station) {\r\n setRequestStatus(REQUEST_STATUS.SUCCESS);\r\n setStationWys(result.data);\r\n } else {\r\n setRequestStatus(REQUEST_STATUS.FAILURE);\r\n setError(`The station ${stationNumber} could not be found.`);\r\n }\r\n\r\n } catch (e) {\r\n setError(`An error occurred trying to retrieve the ${waterYear} water year summary report for station ${stationNumber}.`);\r\n /*\r\n if(e && e.message) {\r\n setError(e.message);\r\n } else {\r\n setError(`An error occurred trying to retrieve the ${waterYear} water year summary report for station ${stationNumber}.`);\r\n }*/\r\n setRequestStatus(REQUEST_STATUS.FAILURE);\r\n\r\n }\r\n }\r\n\r\n if(stationNumber && waterYear) {\r\n setRequestStatus(REQUEST_STATUS.LOADING);\r\n delayFunc();\r\n }\r\n }, [stationNumber, waterYear]);\r\n /*\r\n useEffect(() => {\r\n const fetchStationWys = async () => {\r\n const rsp = await fetch(\"/stationWys_CO-AD-120_2020.json\");\r\n const wys = await rsp.json();\r\n setStationWys(wys);\r\n }\r\n fetchStationWys();\r\n }, []);\r\n */\r\n\r\n return { \r\n stationWys,\r\n stationNumber,\r\n setStationNumber,\r\n waterYear,\r\n setWaterYear,\r\n error,\r\n requestStatus\r\n };\r\n}\r\n\r\nexport default useStationWaterYearSummary;", "import React, { createContext } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport useStationWaterYearSummary from \"../hooks/useStationWaterYearSummary\";\r\nimport { CURRENT_WATER_YEAR, isWaterYearValid } from '../constants'\r\n\r\nconst StationWaterYearSummaryContext = createContext();\r\n\r\nfunction StationWaterYearSummaryProvider({ children }) {\r\n let { stationNumber: initStation, waterYear: initWaterYear } = useParams();\r\n // validate water year\r\n if (!(isWaterYearValid(initWaterYear))) {\r\n initWaterYear = CURRENT_WATER_YEAR;\r\n }\r\n const {\r\n stationWys,\r\n stationNumber,\r\n setStationNumber,\r\n waterYear,\r\n setWaterYear,\r\n requestStatus,\r\n error,\r\n } = useStationWaterYearSummary(initStation, initWaterYear);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport { StationWaterYearSummaryContext, StationWaterYearSummaryProvider };\r\n", "import React, {useContext} from \"react\";\r\nimport { Paper } from '@material-ui/core'\r\nimport Highcharts from 'highcharts';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport { StationWaterYearSummaryContext } from '../../contexts/StationWaterYearSummaryContext';\r\n\r\nfunction getMonthlyChartSeries(wys) {\r\n const series = [{\r\n name: 'Daily Prcp Monthly Total',\r\n stack: 0,\r\n shadow: false,\r\n color: '#4572A7', // blue\r\n data: [wys.monthlyTotals[0].dailyPrcpSum, wys.monthlyTotals[1].dailyPrcpSum, wys.monthlyTotals[2].dailyPrcpSum, wys.monthlyTotals[3].dailyPrcpSum,\r\n wys.monthlyTotals[4].dailyPrcpSum, wys.monthlyTotals[5].dailyPrcpSum, wys.monthlyTotals[6].dailyPrcpSum, wys.monthlyTotals[7].dailyPrcpSum,\r\n wys.monthlyTotals[8].dailyPrcpSum, wys.monthlyTotals[9].dailyPrcpSum, wys.monthlyTotals[10].dailyPrcpSum, wys.monthlyTotals[11].dailyPrcpSum]\r\n\r\n }, {\r\n name: 'Multiday Prcp Monthly Total',\r\n stack: 0,\r\n shadow: false,\r\n color: '#89A54E', // purple:#80699B aqua:3D96AE lightneonblue:99FFFF CCFFFF\r\n data: [wys.monthlyTotals[0].multidayPrcpSum, wys.monthlyTotals[1].multidayPrcpSum, wys.monthlyTotals[2].multidayPrcpSum, wys.monthlyTotals[3].multidayPrcpSum,\r\n wys.monthlyTotals[4].multidayPrcpSum, wys.monthlyTotals[5].multidayPrcpSum, wys.monthlyTotals[6].multidayPrcpSum, wys.monthlyTotals[7].multidayPrcpSum,\r\n wys.monthlyTotals[8].multidayPrcpSum, wys.monthlyTotals[9].multidayPrcpSum, wys.monthlyTotals[10].multidayPrcpSum, wys.monthlyTotals[11].multidayPrcpSum]\r\n\r\n }, {\r\n name: 'Snowfall Monthly Total',\r\n yAxis: 1,\r\n stack: 1,\r\n shadow: false,\r\n color: '#80699B', // green:#89A54E\r\n data: [wys.monthlyTotals[0].totalSnowfall, wys.monthlyTotals[1].totalSnowfall, wys.monthlyTotals[2].totalSnowfall, wys.monthlyTotals[3].totalSnowfall,\r\n wys.monthlyTotals[4].totalSnowfall, wys.monthlyTotals[5].totalSnowfall, wys.monthlyTotals[6].totalSnowfall, wys.monthlyTotals[7].totalSnowfall,\r\n wys.monthlyTotals[8].totalSnowfall, wys.monthlyTotals[9].totalSnowfall, wys.monthlyTotals[10].totalSnowfall, wys.monthlyTotals[11].totalSnowfall]\r\n\r\n }];\r\n // Add series for PRISM normals if available\r\n if (wys.hasPrismData) {\r\n var prismSeries = {\r\n type: 'line',\r\n name: '30 Year Avg by PRISM',\r\n data: [wys.prism30YrMonthlyAvgPrcp.oct, wys.prism30YrMonthlyAvgPrcp.nov, wys.prism30YrMonthlyAvgPrcp.dec, wys.prism30YrMonthlyAvgPrcp.jan, wys.prism30YrMonthlyAvgPrcp.feb,\r\n wys.prism30YrMonthlyAvgPrcp.mar, wys.prism30YrMonthlyAvgPrcp.apr, wys.prism30YrMonthlyAvgPrcp.may, wys.prism30YrMonthlyAvgPrcp.jun, wys.prism30YrMonthlyAvgPrcp.jul,\r\n wys.prism30YrMonthlyAvgPrcp.aug, wys.prism30YrMonthlyAvgPrcp.sep]\r\n };\r\n series.push(prismSeries);\r\n }\r\n return series;\r\n}\r\n\r\nfunction getMapOptions(wys) {\r\n const waterYear = wys.waterYear;\r\n const startYear = waterYear - 1;\r\n\r\n return {\r\n chart: {\r\n type: 'column'\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n title: {\r\n text: `Monthly Precipitation for the ${waterYear} Water Year (Oct ${startYear} - Sept ${waterYear})`\r\n },\r\n subtitle: {\r\n text: `Station: ${wys.station.stationNumber} ${wys.station.stationName}`\r\n },\r\n xAxis: {\r\n categories: [\r\n 'Oct ' + startYear,\r\n 'Nov ' + startYear,\r\n 'Dec ' + startYear,\r\n 'Jan ' + waterYear,\r\n 'Feb ' + waterYear,\r\n 'Mar ' + waterYear,\r\n 'Apr ' + waterYear,\r\n 'May ' + waterYear,\r\n 'Jun ' + waterYear,\r\n 'Jul ' + waterYear,\r\n 'Aug ' + waterYear,\r\n 'Sep ' + waterYear\r\n ]\r\n },\r\n yAxis: [{\r\n min: 0,\r\n title: {\r\n text: 'Monthly Precipitation (inches)',\r\n color: '#4572A7' // blue\r\n }\r\n }, { // Secondary yAxis for Snowfall Accumulation \r\n min: 0,\r\n title: {\r\n text: 'Monthly Snowfall (inches)',\r\n style: {\r\n color: '#80699B' // purple\r\n }\r\n },\r\n opposite: true\r\n }],\r\n legend: {\r\n layout: 'horizontal', // 'vertical'\r\n // backgroundColor: '#FFFFFF',\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 200],\r\n stops: [\r\n [0, '#FFFFFF'],\r\n [1, '#E0E0E0']\r\n ]\r\n },\r\n shadow: true,\r\n align: 'left',\r\n verticalAlign: 'top',\r\n x: 56, // 100\r\n y: 56, //70\r\n floating: true\r\n },\r\n tooltip: {\r\n shared: true,\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 200],\r\n stops: [\r\n [0, '#FFFFFF'],\r\n [1, '#E0E0E0']\r\n ]\r\n },\r\n style: {\r\n padding: 10,\r\n fontWeight: 'bold',\r\n 'line-height': 2\r\n },\r\n borderWidth: 1,\r\n borderColor: '#AAA'/*,\r\n formatter: function () {\r\n var s = '' + this.x + '';\r\n var pointsRef = this.points;\r\n \r\n $.each(pointsRef, function (i, point) {\r\n s += '
' + point.series.name + ':' +\r\n Highcharts.numberFormat(point.y, 2) + '\"';\r\n \r\n // insert combined daily + multiday prcp\r\n if (i == 1) {\r\n s += '
Combined (Daily + Multiday) Prcp: ' +\r\n Highcharts.numberFormat((pointsRef[0].y + pointsRef[1].y), 2) + '\"';\r\n }\r\n });\r\n \r\n \r\n return s;\r\n } */\r\n },\r\n plotOptions: {\r\n column: {\r\n pointPadding: 0.2,\r\n borderWidth: 0,\r\n stacking: 'normal'\r\n }\r\n },\r\n series: getMonthlyChartSeries(wys)\r\n };\r\n} \r\n\r\n\r\n\r\nfunction MonthlyPrecipTotalsChart() {\r\n const {stationWys} = useContext(StationWaterYearSummaryContext);\r\n\r\n if(!stationWys) {\r\n return <>\r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MonthlyPrecipTotalsChart;", "import React, { useContext } from \"react\";\r\nimport Highcharts from \"highcharts\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport { StationWaterYearSummaryContext } from '../../contexts/StationWaterYearSummaryContext';\r\n\r\nfunction parseIso8601(str) {\r\n // we assume str is a UTC date ending in 'Z'\r\n\r\n var parts = str.split(\"T\"),\r\n dateParts = parts[0].split(\"-\"),\r\n timeParts = parts[1].split(\"Z\"),\r\n timeSubParts = timeParts[0].split(\":\"),\r\n timeSecParts = timeSubParts[2].split(\".\"),\r\n timeHours = Number(timeSubParts[0]);\r\n\r\n return Date.UTC(\r\n Number(dateParts[0]),\r\n Number(dateParts[1]) - 1,\r\n Number(dateParts[2])\r\n );\r\n}\r\n\r\nfunction getDaysInWaterYearDailyPrcp(wys) {\r\n const list = wys.dailyPrcpObservations.map((obs) => {\r\n let prcp = obs.precipitation;\r\n if (prcp == null || prcp == \"T\" || prcp == \"M\") {\r\n prcp = 0;\r\n }\r\n return [parseIso8601(obs.obsDateTime), parseFloat(prcp)];\r\n });\r\n return list;\r\n /*\r\n var list = [];\r\n $(wys.dailyPrcpObservations).each(function (i, item) {\r\n var prcp = item.precipitation;\r\n if ((prcp == null) || (prcp == \"T\") || (prcp == \"M\"))\r\n prcp = 0; \r\n\r\n list.push([parseIso8601(item.obsDateTime), parseFloat(prcp)]);\r\n\r\n });\r\n return list;\r\n */\r\n}\r\nfunction getDaysInWaterYearMultidayPrcp(wys) {\r\n const list = wys.multiDayPrcpObservations.map((obs) => {\r\n let prcp = obs.precipitation;\r\n if (prcp == null || prcp == \"T\" || prcp == \"M\") {\r\n prcp = 0;\r\n }\r\n return [parseIso8601(obs.obsEndDateTime), parseFloat(prcp)];\r\n });\r\n return list;\r\n /*\r\n var list = [];\r\n $(wys.multiDayPrcpObservations).each(function (i) {\r\n var prcp = wys.multiDayPrcpObservations[i].precipitation;\r\n if ((prcp == null) || (prcp == \"T\") || (prcp == \"M\"))\r\n prcp = 0;\r\n list.push([parseIso8601(wys.multiDayPrcpObservations[i].obsEndDateTime), parseFloat(prcp)]);\r\n\r\n });\r\n mdList = list;\r\n return list;\r\n */\r\n}\r\nfunction getDaysInWaterAccPrcp(wys) {\r\n const list = wys.daysInWaterYear.map((wyDay) => {\r\n return [parseIso8601(wyDay.day), parseFloat(wyDay.accumulatedPrcp)];\r\n /*\r\n if ((wyDay == 0) && isNaN(parseFloat(wyDay.accumulatedPrcp))) {\r\n return [parseIso8601(wyDay.day), 0];\r\n }\r\n else {\r\n return [parseIso8601(wyDay.day), parseFloat(wyDay.accumulatedPrcp)];\r\n } \r\n */\r\n });\r\n return list;\r\n /*\r\n var list = [];\r\n $(wys.daysInWaterYear).each(function (j) {\r\n if ((j == 0) && isNaN(parseFloat(wys.daysInWaterYear[j].accumulatedPrcp))) {\r\n list.push([parseIso8601(wys.daysInWaterYear[j].Day), 0]);\r\n }\r\n else {\r\n list.push([parseIso8601(wys.daysInWaterYear[j].Day), parseFloat(wys.daysInWaterYear[j].accumulatedPrcp)]);\r\n } \r\n });\r\n\r\n return list;\r\n */\r\n}\r\n\r\nfunction getDaysInWaterPrismAccPrcp(wys) {\r\n let list = [];\r\n let total = 0;\r\n // sum up the monthly averages to produce an accumulated value at the end of each month in the water year\r\n list.push([Date.UTC(wys.waterYear - 1, 9, 1), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.oct;\r\n list.push([Date.UTC(wys.waterYear - 1, 10, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.nov;\r\n list.push([Date.UTC(wys.waterYear - 1, 11, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.dec;\r\n list.push([Date.UTC(wys.waterYear, 0, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.jan;\r\n list.push([Date.UTC(wys.waterYear, 1, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.feb;\r\n list.push([Date.UTC(wys.waterYear, 2, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.mar;\r\n list.push([Date.UTC(wys.waterYear, 3, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.apr;\r\n list.push([Date.UTC(wys.waterYear, 4, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.may;\r\n list.push([Date.UTC(wys.waterYear, 5, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.jun;\r\n list.push([Date.UTC(wys.waterYear, 6, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.jul;\r\n list.push([Date.UTC(wys.waterYear, 7, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.aug;\r\n list.push([Date.UTC(wys.waterYear, 8, 0), total]);\r\n total += wys.prism30YrMonthlyAvgPrcp.sep;\r\n list.push([Date.UTC(wys.waterYear, 9, 0), total]);\r\n\r\n return list;\r\n}\r\n\r\nfunction getAccChartSeries(wys) {\r\n const startYear = wys.waterYear - 1;\r\n var series = [\r\n {\r\n type: \"line\",\r\n name: \"Accumulated Prcp\",\r\n data: getDaysInWaterAccPrcp(wys),\r\n pointInterval: 24 * 3600 * 1000,\r\n pointStart: Date.UTC(startYear, 9, 1),\r\n lineWidth: 1,\r\n marker: {\r\n radius: 2,\r\n states: {\r\n hover: {\r\n radius: 6,\r\n },\r\n },\r\n },\r\n } /*\r\n , {\r\n name: 'Daily Prcp',\r\n type: 'column',\r\n color: '#4572A7', // blue\r\n shadow: false,\r\n data: getDaysInWaterYearDailyPrcp(wys)\r\n }, */ /*{\r\n name: 'Multiday Prcp',\r\n type: 'column',\r\n color: '#89A54E', // 3D96AE\r\n shadow: false,\r\n\r\n data: getDaysInWaterYearMultidayPrcp(wys)\r\n }*/,\r\n ];\r\n /*\r\n if (wys.HasPrismData) {\r\n var prismSeries = {\r\n type: 'line',\r\n name: '30 Year Avg by PRISM',\r\n data: getDaysInWaterPrismAccPrcp(wys)\r\n };\r\n series.push(prismSeries);\r\n } */\r\n return series;\r\n}\r\n\r\nfunction getMapOptions(wys) {\r\n const waterYear = wys.waterYear;\r\n const startYear = waterYear - 1;\r\n\r\n let options = {\r\n chart: {\r\n defaultSeriesType: \"line\",\r\n },\r\n credits: {\r\n enabled: false,\r\n },\r\n title: {\r\n text: `${waterYear} Water Year (Oct ${startYear} - Sept ${waterYear}) Accumulated Precipitation`,\r\n },\r\n subtitle: {\r\n text: `Station: ${wys.station.stationNumber} ${wys.station.stationName}`,\r\n },\r\n legend: {\r\n align: \"right\",\r\n verticalAlign: \"top\",\r\n x: -70,\r\n y: 52,\r\n floating: true,\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 50],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n shadow: true,\r\n },\r\n tooltip: {\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 200],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n style: {\r\n padding: 10,\r\n fontWeight: \"bold\",\r\n \"line-height\": 2,\r\n },\r\n pointFormat: \" {series.name}: {point.y:.2f}\",\r\n // borderWidth: 1,\r\n //borderColor: '#AAA'\r\n },\r\n plotOptions: {\r\n column: {\r\n pointPadding: 0.2, // 0.2\r\n borderWidth: 0,\r\n },\r\n },\r\n xAxis: {\r\n //startOnTick: true,\r\n endOnTick: false,\r\n type: \"datetime\",\r\n labels: {\r\n formatter: function () {\r\n return (\r\n '\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0 ' +\r\n Highcharts.dateFormat(\"%b %y\", this.value) +\r\n \"\"\r\n );\r\n },\r\n },\r\n tickInterval: 24 * 3600 * 1000 * 30,\r\n min: Date.UTC(startYear, 9, 1),\r\n max: Date.UTC(waterYear, 8, 30),\r\n plotBands: [\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 10, 1),\r\n to: Date.UTC(startYear, 11, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 12, 1),\r\n to: Date.UTC(waterYear, 1, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 2, 1),\r\n to: Date.UTC(waterYear, 3, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 4, 1),\r\n to: Date.UTC(waterYear, 5, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 6, 1),\r\n to: Date.UTC(waterYear, 7, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 8, 1),\r\n to: Date.UTC(waterYear, 9, 1),\r\n },\r\n ],\r\n // tickInterval: 24 * 3600 * 1000\r\n // categories: []\r\n },\r\n yAxis: {\r\n title: {\r\n text: \"Precipitation Amount (inches)\",\r\n },\r\n min: 0,\r\n },\r\n series: [\r\n {\r\n type: \"line\",\r\n name: \"Accumulated Prcp\",\r\n data: getDaysInWaterAccPrcp(wys),\r\n pointInterval: 24 * 3600 * 1000,\r\n pointStart: Date.UTC(startYear, 9, 1),\r\n lineWidth: 1,\r\n marker: {\r\n radius: 2,\r\n states: {\r\n hover: {\r\n radius: 6,\r\n },\r\n },\r\n },\r\n },\r\n {\r\n name: \"Daily Prcp\",\r\n type: \"column\",\r\n color: \"#4572A7\", // blue\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearDailyPrcp(wys),\r\n },\r\n {\r\n name: \"Multiday Prcp\",\r\n type: \"column\",\r\n color: \"#89A54E\",\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearMultidayPrcp(wys),\r\n }/*,\r\n {\r\n type: \"line\",\r\n name: \"30 Year Avg by PRISM\",\r\n data: getDaysInWaterPrismAccPrcp(wys),\r\n },\r\n \r\n if (wys.HasPrismData) {\r\n var prismSeries = {\r\n type: 'line',\r\n name: '30 Year Avg by PRISM',\r\n data: getDaysInWaterPrismAccPrcp(wys)\r\n };\r\n series.push(prismSeries);\r\n } */\r\n ],\r\n };\r\n\r\n if (wys.hasPrismData) {\r\n options.series.push(\r\n {\r\n type: \"line\",\r\n name: \"30 Year Avg by PRISM\",\r\n data: getDaysInWaterPrismAccPrcp(wys),\r\n }\r\n );\r\n }\r\n\r\n return options;\r\n}\r\n\r\n/*\r\nfunction getMapOptions(wys) {\r\n const waterYear = wys.waterYear;\r\n const startYear = waterYear - 1;\r\n\r\n return {\r\n chart: {\r\n defaultSeriesType: \"column\",\r\n },\r\n credits: {\r\n enabled: false,\r\n },\r\n title: {\r\n text: `${waterYear} Water Year (Oct ${startYear} - Sept ${waterYear}) Accumulated Precipitation`,\r\n },\r\n subtitle: {\r\n text: `Station: ${wys.station.stationNumber} ${wys.station.stationName}`,\r\n legend: {\r\n align: \"right\",\r\n verticalAlign: \"top\",\r\n x: -200,\r\n y: 52,\r\n floating: true,\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 50],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n shadow: true,\r\n },\r\n tooltip: {\r\n shared: true,\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 200],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n style: {\r\n padding: 10,\r\n fontWeight: \"bold\",\r\n \"line-height\": 2,\r\n },\r\n },\r\n plotOptions: {\r\n column: {\r\n pointPadding: 0.2,\r\n borderWidth: 0,\r\n pointWidth: 2,\r\n },\r\n },\r\n xAxis: {\r\n startOnTick: true,\r\n endOnTick: false,\r\n showLastLabel: false,\r\n showFirstLabel: true,\r\n type: \"datetime\",\r\n labels: {\r\n formatter: function () {\r\n return (\r\n '\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0 ' +\r\n Highcharts.dateFormat(\"%b %y\", this.value) +\r\n \"\"\r\n );\r\n },\r\n },\r\n // tickPixelInterval: 87\r\n tickInterval: 24 * 3600 * 1000 * 30,\r\n min: Date.UTC(startYear, 9, 1),\r\n max: Date.UTC(waterYear, 8, 30),\r\n plotBands: [\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 10, 1),\r\n to: Date.UTC(startYear, 11, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 12, 1),\r\n to: Date.UTC(waterYear, 1, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 2, 1),\r\n to: Date.UTC(waterYear, 3, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 4, 1),\r\n to: Date.UTC(waterYear, 5, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 6, 1),\r\n to: Date.UTC(waterYear, 7, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 8, 1),\r\n to: Date.UTC(waterYear, 9, 1),\r\n },\r\n ],\r\n },\r\n yAxis: {\r\n title: {\r\n text: \"Precipitation Amount (inches)\",\r\n },\r\n min: 0,\r\n },\r\n series: [\r\n {\r\n name: \"Daily Prcp\",\r\n type: \"column\",\r\n color: \"#4572A7\", // blue\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearDailyPrcp(wys),\r\n },\r\n {\r\n name: \"Multiday Prcp\",\r\n type: \"column\",\r\n color: \"#89A54E\",\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearMultidayPrcp(wys),\r\n },\r\n ],\r\n },\r\n };\r\n}\r\n*/\r\n\r\nfunction AccumulatedStationPrecipChart() {\r\n const {stationWys} = useContext(StationWaterYearSummaryContext);\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default AccumulatedStationPrecipChart;\r\n", "import React, { useContext } from \"react\";\r\nimport Highcharts from \"highcharts\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\n\r\nfunction parseIso8601(str) {\r\n // we assume str is a UTC date ending in 'Z'\r\n\r\n var parts = str.split(\"T\"),\r\n dateParts = parts[0].split(\"-\"),\r\n timeParts = parts[1].split(\"Z\"),\r\n timeSubParts = timeParts[0].split(\":\"),\r\n timeSecParts = timeSubParts[2].split(\".\"),\r\n timeHours = Number(timeSubParts[0]);\r\n\r\n return Date.UTC(\r\n Number(dateParts[0]),\r\n Number(dateParts[1]) - 1,\r\n Number(dateParts[2])\r\n );\r\n}\r\n\r\nfunction getDaysInWaterYearDailyPrcp(wys) {\r\n const list = wys.dailyPrcpObservations.map((obs) => {\r\n let prcp = obs.precipitation;\r\n if (prcp == null || prcp == \"T\" || prcp == \"M\") {\r\n prcp = 0;\r\n }\r\n return [parseIso8601(obs.obsDateTime), parseFloat(prcp)];\r\n });\r\n return list;\r\n}\r\nfunction getDaysInWaterYearMultidayPrcp(wys) {\r\n const list = wys.multiDayPrcpObservations.map((obs) => {\r\n let prcp = obs.precipitation;\r\n if (prcp == null || prcp == \"T\" || prcp == \"M\") {\r\n prcp = 0;\r\n }\r\n return [parseIso8601(obs.obsEndDateTime), parseFloat(prcp)];\r\n });\r\n return list;\r\n}\r\n\r\nfunction getMapOptions(wys) {\r\n const waterYear = wys.waterYear;\r\n const startYear = waterYear - 1;\r\n\r\n return {\r\n chart: {\r\n defaultSeriesType: \"column\",\r\n },\r\n credits: {\r\n enabled: false,\r\n },\r\n title: {\r\n text: `${waterYear} Water Year (Oct ${startYear} - Sept ${waterYear}) Daily Precipitation`,\r\n },\r\n subtitle: {\r\n text: `Station: ${wys.station.stationNumber} ${wys.station.stationName}`,\r\n },\r\n legend: {\r\n align: \"right\",\r\n verticalAlign: \"top\",\r\n x: -70,\r\n y: 52,\r\n floating: true,\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 50],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n shadow: true,\r\n },\r\n tooltip: {\r\n backgroundColor: {\r\n linearGradient: [0, 0, 0, 200],\r\n stops: [\r\n [0, \"#FFFFFF\"],\r\n [1, \"#E0E0E0\"],\r\n ],\r\n },\r\n style: {\r\n padding: 10,\r\n fontWeight: \"bold\",\r\n \"line-height\": 2,\r\n },\r\n // borderWidth: 1,\r\n //borderColor: '#AAA'\r\n },\r\n plotOptions: {\r\n column: {\r\n pointPadding: 0.2, // 0.2\r\n borderWidth: 0,\r\n },\r\n },\r\n xAxis: {\r\n //startOnTick: true,\r\n endOnTick: false,\r\n type: \"datetime\",\r\n labels: {\r\n formatter: function () {\r\n return (\r\n '\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0 ' +\r\n Highcharts.dateFormat(\"%b %y\", this.value) +\r\n \"\"\r\n );\r\n },\r\n },\r\n tickInterval: 24 * 3600 * 1000 * 30,\r\n min: Date.UTC(startYear, 9, 1),\r\n max: Date.UTC(waterYear, 8, 30),\r\n plotBands: [\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 10, 1),\r\n to: Date.UTC(startYear, 11, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(startYear, 12, 1),\r\n to: Date.UTC(waterYear, 1, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 2, 1),\r\n to: Date.UTC(waterYear, 3, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 4, 1),\r\n to: Date.UTC(waterYear, 5, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 6, 1),\r\n to: Date.UTC(waterYear, 7, 1),\r\n },\r\n {\r\n color: \"#FEFFE6\",\r\n from: Date.UTC(waterYear, 8, 1),\r\n to: Date.UTC(waterYear, 9, 1),\r\n },\r\n ],\r\n // tickInterval: 24 * 3600 * 1000\r\n // categories: []\r\n },\r\n yAxis: {\r\n title: {\r\n text: \"Precipitation Amount (inches)\",\r\n },\r\n min: 0,\r\n },\r\n series: [\r\n {\r\n name: \"Daily Prcp\",\r\n type: \"column\",\r\n color: \"#4572A7\", // blue\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearDailyPrcp(wys),\r\n },\r\n {\r\n name: \"Multiday Prcp\",\r\n type: \"column\",\r\n color: \"#89A54E\",\r\n pointWidth: 2,\r\n shadow: false,\r\n data: getDaysInWaterYearMultidayPrcp(wys),\r\n },\r\n ],\r\n };\r\n}\r\n\r\nfunction DailyStationPrecipChart() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default DailyStationPrecipChart;\r\n", "import React, { useContext, useEffect } from \"react\";\r\nimport {\r\n Grid,\r\n Typography,\r\n Card,\r\n CardContent,\r\n InputLabel,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Container from \"@material-ui/core/Container\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\"\r\nimport { REQUEST_STATUS } from \"../../hooks/useStationWaterYearSummary\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n searchCard: { display: \"inline-block\" },\r\n blackBorder: { border: \"1px solid black\" },\r\n redBorder: { border: \"1px solid red\" },\r\n greenBorder: { border: \"1px solid green\" },\r\n overviewHeader: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n}));\r\n\r\nfunction ScrollToAnchor({requestStatus, location}) {\r\n useEffect(() => {\r\n \r\n let hash = location.hash;\r\n if (hash) {\r\n const anchor = (document).querySelector(\r\n hash\r\n );\r\n if (anchor) {\r\n anchor.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\r\n }\r\n }\r\n\r\n\r\n }, [requestStatus]);\r\n return <>\r\n}\r\n\r\nfunction StationOverview() {\r\n const { stationWys, requestStatus, stationNumber, waterYear, error } = useContext(\r\n StationWaterYearSummaryContext\r\n );\r\n const classes = useStyles();\r\n let location = useLocation();\r\n\r\n if (requestStatus && requestStatus === REQUEST_STATUS.LOADING) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Loading the {waterYear} water year summary report for{\" \"}\r\n {stationNumber}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (requestStatus && requestStatus === REQUEST_STATUS.FAILURE) {\r\n return (\r\n \r\n \r\n \r\n \r\n An error occured: {error}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Station Overview\r\n \r\n \r\n \r\n \r\n Station Number:\r\n \r\n \r\n {stationWys.station.stationNumber}\r\n \r\n \r\n Station Name:\r\n \r\n \r\n {stationWys.station.stationName}\r\n \r\n \r\n Elevation:\r\n \r\n \r\n {stationWys.station.elevation} ft.\r\n \r\n \r\n \r\n \r\n \r\n Station Location\r\n \r\n \r\n \r\n \r\n County:\r\n \r\n \r\n \r\n {stationWys.station.countyName}, {stationWys.station.stateAbbr}\r\n \r\n \r\n \r\n Latitude:\r\n \r\n \r\n {stationWys.station.latitude}\r\n \r\n \r\n Longitude:\r\n \r\n \r\n {stationWys.station.longitude}\r\n \r\n \r\n \r\n \r\n \r\n Download as Excel File\r\n \r\n \r\n {/* }\r\n \r\n Station Number:\r\n \r\n \r\n {stationWys.station.stationNumber}\r\n \r\n \r\n Station Name:\r\n \r\n \r\n {stationWys.station.stationName}\r\n */}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default StationOverview;\r\n", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport {\r\n Typography,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport { formatPrecip, formatSnow } from \"../../constants\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 450,\r\n },\r\n padded: {\r\n padding: theme.spacing(2),\r\n },\r\n}));\r\n\r\n\r\n/*\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n}))(TableCell);\r\n*/\r\nconst StyledTableRow = withStyles((theme) => ({\r\n root: {\r\n \"&:nth-of-type(odd)\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n}))(TableRow);\r\n\r\nfunction StationMonthlySummaryList() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n const classes = useStyles();\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Water Year Overview\r\n \r\n \r\n \r\n \r\n Year-Month\r\n { stationWys.hasPrismData && \r\n 30 Yr Avg by PRISM\r\n }\r\n Total Precip Sum\r\n Days Covered by All Obs\r\n Daily Precip Sum\r\n Daily Obs Count\r\n Multiday Precip Sum\r\n Days Convered by Multiday Obs\r\n Multiday Obs Count\r\n Days with Precip\r\n Days with Trace\r\n Total Snowfall\r\n Days with Snowfall\r\n Days with Snow on Ground\r\n \r\n \r\n \r\n {stationWys.monthlyTotals.map((row, index) => (\r\n \r\n \r\n {row.shortMonthName} {row.year}\r\n \r\n { stationWys.hasPrismData && \r\n {formatPrecip(row.prism30YrAvgPrcp)}\r\n }\r\n {formatPrecip(row.totalPrcpSum)}\r\n \r\n {row.daysCoveredByAllObservationsCount}\r\n \r\n {formatPrecip(row.dailyPrcpSum)}\r\n \r\n {row.dailyPrcpObservationCount}\r\n \r\n {formatPrecip(row.multidayPrcpSum)}\r\n {row.daysCoveredByMultidayPrcpObservationsCount}\r\n {row.multidayPrcpObservationCount}\r\n {row.daysWithPrcpCount}\r\n {row.daysWithTraceCount}\r\n {formatSnow(row.totalSnowfall)}\r\n {row.daysWithSnowfallCount}\r\n {row.daysWithSnowOnGroundCount}\r\n \r\n ))}\r\n \r\n \r\n \r\n Totals:\r\n { stationWys.hasPrismData && \r\n \r\n {formatPrecip(stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.prism30YrAvgPrcp,\r\n 0\r\n ))}\r\n \r\n }\r\n \r\n {formatPrecip(\r\n stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.totalPrcpSum,\r\n 0\r\n )\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) =>\r\n total + current.daysCoveredByAllObservationsCount,\r\n 0\r\n )}\r\n \r\n \r\n {formatPrecip(\r\n stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.dailyPrcpSum,\r\n 0\r\n )\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.dailyPrcpObservationCount,\r\n 0\r\n )}\r\n \r\n \r\n {formatPrecip(stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.multidayPrcpSum,\r\n 0\r\n ))}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.daysCoveredByMultidayPrcpObservationsCount,\r\n 0\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.multidayPrcpObservationCount,\r\n 0\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.daysWithPrcpCount,\r\n 0\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.daysWithTraceCount,\r\n 0\r\n )}\r\n \r\n \r\n {formatSnow(stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.totalSnowfall,\r\n 0\r\n ))}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.daysWithSnowfallCount,\r\n 0\r\n )}\r\n \r\n \r\n {stationWys.monthlyTotals.reduce(\r\n (total, current) => total + current.daysWithSnowOnGroundCount,\r\n 0\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default StationMonthlySummaryList;\r\n", "import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport { makeStyles } from '@material-ui/styles';\r\n// https://material-ui.com/components/data-grid/columns/#render-cell\r\n// https://stackblitz.com/run?file=demo.js\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n alignItems: 'center',\r\n lineHeight: '24px',\r\n width: '100%',\r\n height: '100%',\r\n position: 'relative',\r\n display: 'flex',\r\n '& .cellValue': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n}));\r\n\r\nfunction isOverflown(element) {\r\n return (\r\n element.scrollHeight > element.clientHeight ||\r\n element.scrollWidth > element.clientWidth\r\n );\r\n}\r\n\r\nconst GridCellExpand = React.memo(function GridCellExpand(props) {\r\n const { width, value } = props;\r\n const wrapper = React.useRef(null);\r\n const cellDiv = React.useRef(null);\r\n const cellValue = React.useRef(null);\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const classes = useStyles();\r\n const [showFullCell, setShowFullCell] = React.useState(false);\r\n const [showPopper, setShowPopper] = React.useState(false);\r\n\r\n const handleMouseEnter = () => {\r\n const isCurrentlyOverflown = isOverflown(cellValue.current);\r\n setShowPopper(isCurrentlyOverflown);\r\n setAnchorEl(cellDiv.current);\r\n setShowFullCell(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setShowFullCell(false);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!showFullCell) {\r\n return undefined;\r\n }\r\n\r\n function handleKeyDown(nativeEvent) {\r\n // IE11, Edge (prior to using Bink?) use 'Esc'\r\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\r\n setShowFullCell(false);\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, [setShowFullCell, showFullCell]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {value}\r\n
\r\n {showPopper && (\r\n \r\n \r\n \r\n {value}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nGridCellExpand.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n width: PropTypes.number.isRequired,\r\n};\r\n\r\nfunction RenderCellExpand(params) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nRenderCellExpand.propTypes = {\r\n /**\r\n * The column of the row that the current cell belongs to.\r\n */\r\n colDef: PropTypes.object.isRequired,\r\n /**\r\n * The cell value, but if the column has valueGetter, use getValue.\r\n */\r\n value: PropTypes.oneOfType([\r\n PropTypes.instanceOf(Date),\r\n PropTypes.number,\r\n PropTypes.object,\r\n PropTypes.string,\r\n PropTypes.bool,\r\n ]),\r\n};\r\n\r\nexport default RenderCellExpand;", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport { DataGrid } from \"@material-ui/data-grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport RenderCellExpand from \"../RenderCellExpand\";\r\nimport { TRACE_VALUE, precipCellRenderer, timeCellRenderer, snowCellRenderer } from \"../../constants\"\r\nimport { parse } from 'date-fns'\r\nimport CustomToolbar from '../CustomToolBar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 450,\r\n minHeight: 600,\r\n },\r\n padded: {\r\n padding: theme.spacing(2),\r\n },\r\n}));\r\n\r\nfunction StationDailyPrecipObsList() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n const classes = useStyles();\r\n const refDate = new Date();\r\n\r\n const columns = [\r\n {\r\n field: \"obsDateTime\",\r\n headerName: \"Obs Date\",\r\n type: \"date\",\r\n width: 140,\r\n align: \"right\",\r\n valueFormatter: (params) => {\r\n return params.value.substring(0, 10);\r\n },\r\n },\r\n {\r\n field: \"obsTime\",\r\n headerName: \"Obs Time\",\r\n type: \"date\",\r\n width: 140,\r\n renderCell: timeCellRenderer,\r\n },\r\n {\r\n field: \"precip\",\r\n headerName: \"Precip\",\r\n type: \"number\",\r\n width: 120,\r\n renderCell: precipCellRenderer\r\n /*\r\n valueFormatter: precipGridFormatter,\r\n valueGetter: precipGetter,\r\n getApplyFilterFn: (filterItem, column) => {\r\n if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {\r\n return null;\r\n }\r\n return (params) => {\r\n return Number(params.value) >= Number(filterItem.value);\r\n };\r\n },\r\n */\r\n },\r\n {\r\n field: \"snowfall\",\r\n headerName: \"Snowfall\",\r\n type: \"number\",\r\n width: 140,\r\n renderCell: snowCellRenderer\r\n },\r\n {\r\n field: \"snowfallSwe\",\r\n headerName: \"Snowfall SWE\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"snowDepth\",\r\n headerName: \"Snowpack Depth\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: snowCellRenderer\r\n },\r\n {\r\n field: \"snowDepthSwe\",\r\n headerName: \"Snowpack SWE\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"notes\",\r\n headerName: \"Notes\",\r\n width: 200,\r\n renderCell: RenderCellExpand,\r\n },\r\n {\r\n field: \"flooding\",\r\n headerName: \"Flooding\",\r\n width: 200,\r\n renderCell: RenderCellExpand,\r\n },\r\n ];\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n Daily Precip Observations\r\n \r\n {stationWys.dailyPrcpObservations.length > 0 ? (\r\n
\r\n
\r\n {\r\n return {\r\n ...obs,\r\n id: obs.obsDateTime,\r\n precip: (obs.precipitationIsTrace)? TRACE_VALUE : obs.precipitation,\r\n snowfall: (obs.snowfallIsTrace)? TRACE_VALUE : obs.snowfall,\r\n snowfallSwe: (obs.snowfallSweIsTrace)? TRACE_VALUE : obs.snowfallSwe,\r\n snowDepth: (obs.snowDepthIsTrace)? TRACE_VALUE : obs.snowDepth,\r\n snowDepthSwe: (obs.snowDepthSweIsTrace)? TRACE_VALUE : obs.snowDepthSwe,\r\n obsTime: parse(obs.obsDateTime.substring(0, 16), \"yyyy-MM-dd'T'HH:mm\", refDate)\r\n };\r\n })}\r\n columns={columns}\r\n components={{\r\n Toolbar: CustomToolbar,\r\n }}\r\n />\r\n
\r\n
\r\n ) : (\r\n \r\n No daily precip observations were submitted.\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default StationDailyPrecipObsList;\r\n", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport { DataGrid } from \"@material-ui/data-grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport RenderCellExpand from \"../RenderCellExpand\";\r\nimport { TRACE_VALUE, NA_LABEL, precipCellRenderer, timeCellRenderer, snowCellRenderer } from \"../../constants\"\r\nimport { parse, format } from 'date-fns'\r\nimport CustomToolbar from '../CustomToolBar';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 450,\r\n minHeight: 100,\r\n },\r\n padded: {\r\n padding: theme.spacing(2),\r\n },\r\n}));\r\n\r\nfunction StationMultidayObsList() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n const classes = useStyles();\r\n const refDate = new Date();\r\n\r\n const columns = [\r\n {\r\n field: \"obsStartDate\",\r\n headerName: \"Obs Start Date\",\r\n type: \"date\",\r\n width: 160,\r\n valueFormatter: (params) => {\r\n return params.value.substring(0, 10);\r\n },\r\n },\r\n {\r\n field: \"obsEndDateTime\",\r\n headerName: \"Obs End Date Time\",\r\n type: \"date\",\r\n width: 160,\r\n valueFormatter: (params) => {\r\n return format(params.value, \"yyyy-MM-dd HH:mm aaa\");\r\n },\r\n },\r\n {\r\n field: \"obsDurationInDays\",\r\n headerName: \"Obs Days\",\r\n type: \"number\",\r\n width: 140,\r\n },\r\n {\r\n field: \"precipitation\",\r\n headerName: \"Precip\",\r\n type: \"number\",\r\n width: 140,\r\n renderCell: precipCellRenderer\r\n },\r\n {\r\n field: \"snowDepth\",\r\n headerName: \"Snowpack Depth\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: snowCellRenderer\r\n },\r\n {\r\n field: \"snowDepthSwe\",\r\n headerName: \"Snowpack SWE\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: precipCellRenderer\r\n }, \r\n/* {\r\n field: \"snowRatio\",\r\n headerName: \"Snowpack SWR\",\r\n description: \"Snowpack Snow to Water Ratio\",\r\n type: \"number\",\r\n width: 160,\r\n renderCell: (params) => {\r\n if(params.value === NA_LABEL) {\r\n return <>{NA_LABEL}\r\n } else {\r\n return <>{params.value}%\r\n }\r\n }\r\n }, */\r\n {\r\n field: \"notes\",\r\n headerName: \"Notes\",\r\n width: 200,\r\n renderCell: RenderCellExpand,\r\n },\r\n ];\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n Multiday Precip Observations\r\n \r\n {stationWys.multiDayPrcpObservations.length > 0 ? (\r\n
\r\n
\r\n {\r\n return {\r\n ...obs,\r\n id: obs.dateTimeStamp,\r\n precipitation: (obs.precipitationIsTrace)? TRACE_VALUE : obs.precipitation,\r\n snowDepth: (obs.snowDepthIsTrace)? TRACE_VALUE : obs.snowDepth,\r\n snowDepthSwe: (obs.snowDepthSweIsTrace)? TRACE_VALUE : obs.snowDepthSwe,\r\n // snowRatio: (obs.snowDepth && obs.snowDepthSwe)? ((obs.snowDepthSwe/obs.snowDepth)*100).toFixed(2) : NA_LABEL,\r\n obsEndDateTime: parse(obs.obsEndDateTime.substring(0, 16), \"yyyy-MM-dd'T'HH:mm\", refDate)\r\n };\r\n })}\r\n columns={columns}\r\n autoHeight={true}\r\n hideFooterPagination={true}\r\n disableSelectionOnClick={true}\r\n hideFooter={true}\r\n components={{\r\n Toolbar: CustomToolbar,\r\n }}\r\n />\r\n
\r\n
\r\n ) : (\r\n \r\n No multiday precip observations were submitted.\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default StationMultidayObsList;\r\n", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport {\r\n Typography,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 250,\r\n },\r\n padded: {\r\n padding: theme.spacing(1),\r\n},\r\n dailyPrecipCell: {\r\n backgroundColor: '#CCF'\r\n },\r\n multidayCell: {\r\n backgroundColor: '#CFF'\r\n },\r\n missingCell: {\r\n backgroundColor: '#E4E4E4'\r\n },\r\n conflictCell: {\r\n backgroundColor: '#F00'\r\n },\r\n defaultCell: {\r\n \r\n }\r\n}));\r\n\r\nfunction GetDailyCellClass(classes, day) {\r\n if(day.dailyPrcpValue == null && day.multidayPrcp == null) {\r\n return classes.missingCell;\r\n }\r\n else if(day.dailyPrcpValue > 0) {\r\n return classes.dailyPrecipCell;\r\n } \r\n else if(day.dailyPrcp === 'T') {\r\n return classes.dailyPrecipCell;\r\n }\r\n else {\r\n return classes.defaultCell;\r\n }\r\n}\r\n\r\nfunction GetMultidayCellClass(classes, day) {\r\n if(day.dailyPrcpValue != null && day.multidayPrcp != null) {\r\n return classes.conflictCell;\r\n }\r\n else if(day.multidayPrcp != null) {\r\n return classes.multidayCell;\r\n } \r\n else {\r\n return classes.defaultCell;\r\n }\r\n}\r\n\r\nfunction CreateDaysInWyTable(classes, stationWys, months, monthsText) {\r\n\r\n return (\r\n \r\n \r\n Days in Water Year ({monthsText})\r\n \r\n \r\n \r\n \r\n Day of Year\r\n Daily Precip\r\n Multiday Precip\r\n \r\n \r\n \r\n {stationWys.daysInWaterYear\r\n .filter((day) => {\r\n return months.includes(day.day.substring(5, 7));\r\n })\r\n .map((row, index) => (\r\n \r\n \r\n {row.day.substring(0, 10)}\r\n \r\n {row.dailyPrcp}\r\n {row.multidayPrcp}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction StationDaysInWaterYear() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n const classes = useStyles();\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Days in Water Year Color Key\r\n \r\n \r\n \r\n \r\n \r\n Daily Observation with Precip\r\n \r\n Missing Day\r\n \r\n \r\n \r\n Multiday Observation\r\n \r\n Daily/Multiday Observation Conflict\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {CreateDaysInWyTable(classes, stationWys, [\"10\", \"11\", \"12\"], \"Oct - Dec\")}\r\n \r\n \r\n {CreateDaysInWyTable(classes, stationWys, [\"01\", \"02\", \"03\"], \"Jan - Mar\")}\r\n \r\n \r\n {CreateDaysInWyTable(classes, stationWys, [\"04\", \"05\", \"06\"], \"Apr - Jun\")}\r\n \r\n \r\n {CreateDaysInWyTable(classes, stationWys, [\"07\", \"08\", \"09\"], \"Jul - Sep\")}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default StationDaysInWaterYear;\r\n", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport { DataGrid } from \"@material-ui/data-grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport RenderCellExpand from \"../RenderCellExpand\";\r\nimport { hailStoneCellRenderer } from \"../../constants\"; \r\nimport CustomToolbar from '../CustomToolBar';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 650,\r\n minHeight: 100,\r\n },\r\n padded: {\r\n padding: theme.spacing(2),\r\n },\r\n}));\r\n\r\nfunction StationHailObsList() {\r\n const { stationWys } = useContext(StationWaterYearSummaryContext);\r\n const classes = useStyles();\r\n\r\n const columns = [\r\n {\r\n field: \"obsDateTime\",\r\n headerName: \"Obs Date\",\r\n type: \"date\",\r\n width: 160,\r\n valueFormatter: (params) => {\r\n return params.value.substring(0, 10);\r\n },\r\n },/*\r\n {\r\n field: \"obsDateTime\",\r\n headerName: \"Obs Time\",\r\n width: 200,\r\n valueFormatter: (params) => {\r\n return params.value.substring(10, 5);\r\n },\r\n },*/\r\n {\r\n field: \"largestSize\",\r\n headerName: \"Largest Stone Size\",\r\n width: 200,\r\n renderCell: hailStoneCellRenderer,\r\n },\r\n {\r\n field: \"averageSize\",\r\n headerName: \"Avg Stone Size\",\r\n width: 200,\r\n renderCell: hailStoneCellRenderer,\r\n }, \r\n {\r\n field: \"smallestSize\",\r\n headerName: \"Smallest Stone Size\",\r\n width: 200,\r\n renderCell: hailStoneCellRenderer,\r\n },\r\n {\r\n field: \"stoneConsistency\",\r\n headerName: \"Stone Consistency\",\r\n width: 200,\r\n },\r\n {\r\n field: \"durationMinutes\",\r\n headerName: \"Duration Minutes\",\r\n width: 200,\r\n },\r\n {\r\n field: \"durationAccuracy\",\r\n headerName: \"Durration Accuracy\",\r\n width: 200,\r\n },\r\n {\r\n field: \"damage\",\r\n headerName: \"Damage\",\r\n width: 200,\r\n },\r\n {\r\n field: \"timing\",\r\n headerName: \"Timing\",\r\n width: 200,\r\n },\r\n {\r\n field: \"moreRainThanHail\",\r\n headerName: \"More Rain than Hail\",\r\n width: 200,\r\n },\r\n {\r\n field: \"hailStarted\",\r\n headerName: \"Hail Started\",\r\n width: 200,\r\n },\r\n {\r\n field: \"largestHailStarted\",\r\n headerName: \"Largest Hail Started\",\r\n width: 200,\r\n },\r\n {\r\n field: \"angleOfImpact\",\r\n headerName: \"Angle of Impact\",\r\n width: 200,\r\n },\r\n {\r\n field: \"numberOfStonesOnPad\",\r\n headerName: \"Number of Stones on Pad\",\r\n width: 200,\r\n },\r\n {\r\n field: \"distanceBtwnStonesOnPad\",\r\n headerName: \"Distance Between Stones on Pad\",\r\n width: 200,\r\n },\r\n {\r\n field: \"depthOnGround\",\r\n headerName: \"Depth of Stones on Ground\",\r\n width: 200,\r\n },\r\n {\r\n field: \"notes\",\r\n headerName: \"Notes\",\r\n width: 200,\r\n renderCell: RenderCellExpand,\r\n },\r\n ];\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n Hail Observations\r\n \r\n {stationWys.hailObservations.length > 0 ? (\r\n
\r\n
\r\n {\r\n return {\r\n ...obs,\r\n id: obs.dateTimeStamp,\r\n };\r\n })}\r\n columns={columns}\r\n autoHeight={true}\r\n hideFooterPagination={true}\r\n disableSelectionOnClick={true}\r\n hideFooter={true}\r\n components={{\r\n Toolbar: CustomToolbar,\r\n }}\r\n />\r\n
\r\n
\r\n ) : (\r\n \r\n No hail observations were submitted.\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default StationHailObsList;\r\n\r\n/*\r\nObservation Date\tObservation Time\tNotes\tLargest Stone Size\tAverage Stone Size\tSmallest Stone Size\tStone Consistency\tDuration Minutes\tDurration Accuracy\tDamage\tTiming\tMore Rain than Hail\tHail Started\tLargest Hail Started\tAngle of Impact\tNumber of Stones on Pad\tDistance Between Stones on Pad\tDepth of Stones on Ground\r\n\r\n\"HailObservations\":[\r\n{\"CreationDate\":\"2020-07-11T13:53:00Z\",\r\n\"DateTimeStamp\":\"2020-07-11T13:53:14.193Z\",\r\n\"ObsDateTime\":\"2020-07-09T21:55:00+00:00\",\r\n\"StationNumber\":\"CO-AR-381\",\r\n\"Notes\":\"Largest hailstone recovered measured 3.5\\\"x3\\\"x1.75\\\". Another round stone measured 2.5\\\" diameter. Both of these stones had a jagged structure. Photos available, shared with Boulder NWS.\",\r\n\"LargestSize\":3.000,\r\n\"AverageSize\":1.500,\r\n\"SmallestSize\":0.500,\r\n\"DurationMinutes\":25\r\n,\"StoneConsistency\":\"Hard|Clear Ice|White Ice\",\"DurationAccuracy\":\"3min\",\"Timing\":\"Continuous\",\"MoreRainThanHail\":true,\"HailStarted\":\"Before rain\",\"LargestHailStarted\":\"Same time as smaller hail\",\"AngleOfImpact\":\"30-40\",\"NumberOfStonesOnPad\":\"\",\"DistanceBtwnStonesOnPad\":\"\",\"DepthOnGround\":\"\",\"Damage\":\"minor leaf damage.damaged shingles\"},\r\n*/\r\n", "import React, { useContext } from \"react\";\r\nimport { StationWaterYearSummaryContext } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport ViewListIcon from '@material-ui/icons/ViewList';\r\nimport { HashLink } from \"react-router-hash-link\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ButtonGroup from \"@material-ui/core/ButtonGroup\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nfunction StationWysNav() {\r\n const { stationWys, requestStatus, stationNumber, waterYear, error } =\r\n useContext(StationWaterYearSummaryContext);\r\n const history = useHistory();\r\n\r\n if (!stationWys) {\r\n return <>;\r\n }\r\n\r\n const stationListUrl = (stationWys.station)? `/${stationWys.station.stateAbbr}/${stationWys.waterYear}` : \"/\";\r\n\r\n return (\r\n <>\r\n }\r\n onClick={() =>\r\n history.push(stationListUrl)\r\n }\r\n >\r\n Station List\r\n \r\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 StationWysNav;\r\n", "import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport MonthlyPrecipTotalsChart from \"./MonthlyPrecipTotalsChart\";\r\nimport AccumulatedStationPrecipChart from \"./AccumulatedStationPrecipChart\";\r\nimport DailyStationPrecipChart from \"./DailyStationPrecipChart\";\r\nimport StationOverview from \"./StationOverview\";\r\nimport { StationWaterYearSummaryProvider } from \"../../contexts/StationWaterYearSummaryContext\";\r\nimport StationMonthlySummaryList from \"./StationMonthlySummaryList\";\r\nimport StationDailyPrecipObsList from \"./StationDailyPrecipObsList\";\r\nimport StationMultidayPrecipObsList from \"./StationMultidayPrecipObsList\";\r\nimport StationDaysInWaterYear from \"./StationDaysInWaterYear\";\r\nimport StationHailObsList from \"./StationHailObsList\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport KeyboardArrowUpIcon from \"@material-ui/icons/KeyboardArrowUp\";\r\nimport Zoom from \"@material-ui/core/Zoom\";\r\nimport useScrollTrigger from \"@material-ui/core/useScrollTrigger\";\r\nimport StationWysNav from \"./StationWysNav\";\r\nimport Highcharts from \"highcharts\";\r\nimport { useEffect } from \"react\";\r\nrequire(\"highcharts/modules/exporting\")(Highcharts);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n position: \"fixed\",\r\n bottom: theme.spacing(2),\r\n right: theme.spacing(2),\r\n },\r\n}));\r\n\r\nfunction ScrollTop(props) {\r\n const { children, window } = props;\r\n const classes = useStyles();\r\n // Note that you normally won't need to set the window ref as useScrollTrigger\r\n // will default to window.\r\n // This is only being set here because the demo is in an iframe.\r\n const trigger = useScrollTrigger({\r\n target: window ? window() : undefined,\r\n disableHysteresis: true,\r\n threshold: 100,\r\n });\r\n\r\n const handleClick = (event) => {\r\n const anchor = (event.target.ownerDocument || document).querySelector(\r\n \"#top\"\r\n );\r\n\r\n if (anchor) {\r\n anchor.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\n\r\nfunction StationWaterYearSummary({ children }) {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction StationWaterYearSummaryNoProvider(props) {\r\n const { children } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default StationWaterYearSummary;\r\n", "import React from \"react\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Box, Container } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n padded: {\r\n padding: theme.spacing(2),\r\n }\r\n}));\r\n\r\nfunction About() {\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n About the Water Year\r\n \r\n Hydrologists and climatologists often use the \"Water Year\" calendar for tracking water resources. While the definition may vary regionally, a common definition of Water Year is October 1 through September 30. This definition of Water Year is used by the U.S. Geological Survey (USGS) especially when dealing with surface water supplies. It is intended to define the period from the beginning of the wet season through the end of the demand season. Chances are that if you live east of the Rocky Mountains where precipitation is plentiful year around, on average, the concept of Water Year is unfamiliar.\r\n \r\n \r\n In the western U.S. during the cool months evaporation rates are very low, snow accumulates in cold regions and mountains, and storms tend to be larger and produce precipitation over wide areas. When the dry season begins in the late spring surface water supplies rely on snow melt and high runoff from mountainous regions and higher latitudes. The summer months bring high evaporation rates. Precipitation becomes much more localized, and some areas out west go for long periods without any significant rainfall. Streams run slower and clearer.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n The first map is the proportion of annual precipitation that occurs across the U.S. from October 1 to April 30, considered to be the wet season in much of the area west of the Rockies. Note the high precipitation amounts in the Pacific Northwest south to the Sierra Nevada. The second map is the proportion of annual precipitation from May 1 to September 30. The western U.S. is relatively dry, while the eastern U.S. is wet by contrast. A water year does not split the fall and winter seasons because the majority of storms along the west coast (and the snows that produce western water supply) occur between October and May. For reference the average annual precipitation for the two periods is also shown. Note the maps have different scales. \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n CoCoRaHS recommends this Water Year calendar for tabulating precipitation amounts. If you are a CoCoRaHS observer, you can access your Water Year Summary reports for your station(s) from here or the \"My Account\" page of the main website.\r\n \r\n \r\n );\r\n}\r\n\r\nexport default About;\r\n", "import React from \"react\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Box, Grid } from \"@material-ui/core\";\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActionArea from '@material-ui/core/CardActionArea';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport Button from '@material-ui/core/Button';\r\nimport Container from '@material-ui/core/Container';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: 400,\r\n },\r\n media: {\r\n height: 240,\r\n },\r\n padded: {\r\n padding: theme.spacing(2),\r\n }\r\n}));\r\n\r\nfunction Help() {\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n Help with the Water Year Summary Reports\r\n \r\n To learn more about the features of the water year summary reports, please check out the help video and help document. \r\n The feedback survey is available for you to let us know how we can improve the water year summary reports through bug fixes or feature additions. \r\n Any additional questions can be emailed to us at info@cocorahs.org. \r\n \r\n \r\n \r\n \r\n window.open(\"https://youtu.be/-rErA0G1nnU\" )}>\r\n \r\n \r\n \r\n Help Video\r\n \r\n \r\n The help video provides an overview of the features available in the water year summary reports search and for individual station reports. \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n window.open(\"/wys-app-help.pdf\" )}>\r\n \r\n \r\n \r\n Help Document\r\n \r\n \r\n The PDF help documentation provides an overview of the features available in the water year summary reports search and for individual station reports. \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n );\r\n}\r\n\r\nexport default Help;\r\n", "import React from \"react\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n padded: {\r\n padding: theme.spacing(2),\r\n }\r\n}));\r\n\r\nfunction Feedback() {\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n Feedback Form\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Feedback;\r\n", "import React, { useEffect, useState } from \"react\";\r\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom'\r\nimport { Grid, Typography, Paper } from '@material-ui/core';\r\nimport Header from './components/Header';\r\nimport StateWaterYearSummary from './components/StateWaterYearSummary';\r\nimport StationWaterYearSummary from './components/station/StationWaterYearSummaryLongPage';\r\nimport About from './components/About'\r\nimport Help from './components/Help'\r\nimport Feedback from './components/Feedback'\r\n\r\n// #b0c4de, #ececec\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n", "const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n", "import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { ThemeProvider, createTheme } from '@material-ui/core/styles';\r\n\r\n//dark blue #0C2E82, light blue #b0c4de, light green #87cfa3\r\nconst theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: \"#0C2E82\"\r\n },\r\n secondary: {\r\n main: \"#87cfa3\"\r\n }\r\n }\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n" ], "sourceRoot": "" }