{"version":3,"sources":["components/NavMenu.js","components/Footer.js","components/Layout.js","components/Location.js","components/ForecastMap.js","components/TideChart.js","components/TideClock.js","components/RatingCard.js","components/WeatherTab.js","components/Forecast.js","App.js","registerServiceWorker.js","index.js"],"names":["NavMenu","props","toggleNavbar","bind","state","collapsed","this","setState","Navbar","className","light","Container","NavbarBrand","tag","Link","to","src","alt","style","width","verticalAlign","NavbarToggler","onClick","Collapse","isOpen","navbar","NavItem","NavLink","Component","displayName","name","Footer","Layout","children","RatingButton","rating","Button","color","icon","faCaretRight","Location","searchTimer","locations","loading","searchOnChange","populateWeatherData","fetch","response","json","data","e","window","clearTimeout","target","value","setTimeout","items","item","rowCount","itemCount","entries","i","location","weather","JSON","parse","weatherJSON","parseInt","ratingDiff","bgColour","chartData","labels","datasets","backgroundColor","Chart","helpers","alpha","rgbString","borderColor","borderWidth","push","Col","key","md","Card","classnames","CardTitle","placeName","systemName","Row","weatherForecastName","weatherForecastIconClass","airTemperature","displayType","decimalScale","height","options","responsive","maintainAspectRatio","cutoutPercentage","legend","display","tooltips","enabled","CardBody","swellHeight","waveHeight","windSpeed","windGust","Number","isInteger","length","InputGroup","InputGroupAddon","addonType","InputGroupText","faSearch","Input","placeholder","onChange","Spinner","renderLocations","DefaultIcon","L","iconUrl","shadowUrl","iconShadow","Marker","prototype","ForecastMap","locationSystemName","weatherPoints","lat","lng","zoom","getData","markers","defaultPosition","weatherPoint","markerPosition","latitude","longitude","current","position","Popup","Map","id","center","maxZoom","TileLayer","attribution","url","renderMap","TideChart","max","Math","min","apply","canvas","gradient","getContext","createLinearGradient","addColorStop","date","fill","lineTension","title","scales","xAxes","gridLines","yAxes","ticks","beginAtZero","autoSkip","maxTicksLimit","callback","index","values","toString","fontColor","TideClock","tick","nextTide","nextTideTime","nextTideType","nextTideTypeSystemName","nextTideTypeDescription","timerID","setInterval","clearInterval","now","moment","tide","tideDate","isSameOrBefore","tideType","tideTypeSystemName","tideTypeDescription","utc","diff","format","faArrowDown","faArrowUp","waterTemperature","renderClock","React","RatingCard","currentDate","displayDate","isSame","RatingBadge","muted","getSwellWindDirectionClass","direction","WeatherTab","toggleActiveHour","hour","onSelectHour","activeHour","tabId","currentHour","weatherData","tideData","forEach","currentHours","hours","mute","TabPane","Table","map","scope","colSpan","swellWindDirectionSystemName","windDirection","renderText","swellWindDirection","faWater","swellPeriod","swellDirection","renderWeatherTab","WeatherNav","weatherClassName","weatherHours","Badge","pill","Forecast","handleActiveHour","activeHours","activeTab","match","params","toggleTab","forecasts","tab","htmlString","currentForecast","currentForecastHour","lg","Nav","pills","forecast","TabContent","tideJSON","imageUrl","href","CardImg","top","dangerouslySetInnerHTML","imageUrlCitation","__html","nextTideJSON","renderDays","App","exact","path","component","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","catch","error","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","URL","process","origin","addEventListener","status","headers","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.8d0733ed.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\n\r\nexport class NavMenu extends Component {\r\n\tstatic displayName = NavMenu.name;\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.toggleNavbar = this.toggleNavbar.bind(this);\r\n\t\tthis.state = {\r\n\t\t\tcollapsed: true\r\n\t\t};\r\n\t}\r\n\r\n\ttoggleNavbar() {\r\n\t\tthis.setState({\r\n\t\t\tcollapsed: !this.state.collapsed\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\"Surf\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tsurfaotearoa\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tHome\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nexport class Footer extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\t\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from './NavMenu';\r\nimport { Footer } from './Footer';\r\n\r\nexport class Layout extends Component {\r\n\tstatic displayName = Layout.name;\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{this.props.children}\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Spinner, Card, CardImg, CardTitle, CardBody } from 'reactstrap';\r\nimport { Button, Row, Col, Badge, InputGroup, InputGroupAddon, InputGroupText, Input } from 'reactstrap';\r\nimport classnames from 'classnames';\r\nimport { BrowserRouter as Router, Link } from \"react-router-dom\";\r\nimport NumberFormat from 'react-number-format';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faSearch, faCaretRight } from '@fortawesome/free-solid-svg-icons'\r\nimport { Chart } from 'chart.js';\r\nimport { Doughnut } from 'react-chartjs-2';\r\n\r\n\r\nfunction RatingBadge(props) {\r\n\tvar className = \"badge-danger\";\r\n\r\n\tif (props.rating > 3) {\r\n\t\tclassName = \"badge-warning\";\r\n\t}\r\n\tif (props.rating > 6) {\r\n\t\tclassName = \"badge-success\";\r\n\t}\r\n\r\n\treturn ({props.rating});\r\n}\r\n\r\nfunction RatingButton(props) {\r\n\tvar className = \"danger\";\r\n\r\n\tif (props.rating > 3) {\r\n\t\tclassName = \"warning\";\r\n\t}\r\n\tif (props.rating > 6) {\r\n\t\tclassName = \"success\";\r\n\t}\r\n\r\n\treturn ()\r\n}\r\n\r\nexport class Location extends Component {\r\n\tstatic displayName = Location.name;\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tsearchTimer: null,\r\n\t\t\tname: \"\",\r\n\t\t\tlocations: [],\r\n\t\t\tloading: true\r\n\t\t};\r\n\r\n\t\tthis.searchOnChange = this.searchOnChange.bind(this);\r\n\t\tthis.populateWeatherData = this.populateWeatherData.bind(this);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.populateWeatherData();\r\n\t}\r\n\r\n\tasync populateWeatherData(name) {\r\n\t\tthis.setState({ loading: true });\r\n\r\n\t\tconst response = await fetch('location?name=' + this.state.name);\r\n\t\tconst data = await response.json();\r\n\r\n\t\tthis.setState({ locations: data, loading: false, searchTimer: null });\r\n\t}\r\n\r\n\tsearchOnChange(e) {\r\n\t\tif (this.state.searchTimer) {\r\n\t\t\twindow.clearTimeout(this.state.searchTimer);\r\n\t\t}\r\n\r\n\t\tthis.setState({\r\n\t\t\tname: e.target.value,\r\n\t\t\tsearchTimer: window.setTimeout(this.populateWeatherData, 1000)\r\n\t\t});\r\n\t}\r\n\r\n\trenderLocations() {\r\n\t\tvar items = [],\r\n\t\t\titem = [],\r\n\t\t\trowCount = 0,\r\n\t\t\titemCount = 0;\r\n\r\n\t\tfor (const [i, location] of this.state.locations.entries()) {\r\n\t\t\tvar weather = JSON.parse(location.weatherJSON);\r\n\r\n\t\t\tif (!weather) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet rating = parseInt(weather.rating),\r\n\t\t\t\tratingDiff = 10 - rating,\r\n\t\t\t\tbgColour = '#28a745';\r\n\r\n\t\t\tif (rating < 7) {\r\n\t\t\t\tbgColour = '#ffc107';\r\n\t\t\t}\r\n\t\t\tif (rating < 4) {\r\n\t\t\t\tbgColour = '#dc3545';\r\n\t\t\t}\r\n\r\n\t\t\tconst chartData = {\r\n\t\t\t\tlabels: [rating, ratingDiff],\r\n\t\t\t\tdatasets: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbackgroundColor: [\r\n\t\t\t\t\t\t\tChart.helpers.color(bgColour).alpha(1).rgbString(),\r\n\t\t\t\t\t\t\tChart.helpers.color('#f8f9fa').alpha(1).rgbString()\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tborderColor: [bgColour, '#f8f9fa'],\r\n\t\t\t\t\t\tborderWidth: 1,\r\n\t\t\t\t\t\tborderColor: 'transparent',\r\n\t\t\t\t\t\tdata: [rating, ratingDiff]\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\r\n\t\t\titem.push(\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

{location.name}

\r\n\t\t\t\t\t\t\t{location.placeName}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{weather.weatherForecastName}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
°
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{rating}/10\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSWELL HEIGHT\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tm\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tWAVE HEIGHT\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tm\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tWIND\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tkts\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tGUSTS\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tkts\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t)\r\n\r\n\t\t\titemCount++;\r\n\t\t\trowCount = itemCount / 3;\r\n\r\n\t\t\tif (Number.isInteger(rowCount) && (rowCount) > 0) {\r\n\t\t\t\titems.push({item})\r\n\t\t\t\titem = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (item.length > 0) {\r\n\t\t\titems.push({item})\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{items.length > 0 ? items :

No results found

}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{this.state.loading ?
: this.renderLocations()}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react'\nimport { Map, TileLayer, Marker, Popup } from 'react-leaflet'\nimport { Spinner } from 'reactstrap'\nimport MarkerClusterGroup from 'react-leaflet-markercluster';\n\nimport L from 'leaflet';\nimport icon from 'leaflet/dist/images/marker-icon.png';\nimport iconShadow from 'leaflet/dist/images/marker-shadow.png';\n\nlet DefaultIcon = L.icon({\n iconUrl: icon,\n shadowUrl: iconShadow\n});\n\nL.Marker.prototype.options.icon = DefaultIcon;\n\nexport class ForecastMap extends Component {\n static displayName = ForecastMap.name;\n\n constructor(props) {\n super(props);\n\n this.state = { \n locationSystemName: this.props.locationSystemName,\n loading: true,\n weatherPoints: [], \n lat: -41.838875, \n lng: 171.7799, \n zoom: 13 \n };\n }\n\n componentDidMount() {\n\t\tthis.getData(this.state.locationSystemName);\n\t}\n\n\tasync getData(locationSystemName) {\n\t\tconst response = await fetch('WeatherForecast/Markers/' + locationSystemName);\n\t\tconst data = await response.json();\n\t\tthis.setState({ weatherPoints: data, loading: false });\n\t}\n\n renderMap(){\n const markers = [];\n var defaultPosition = [this.state.lat, this.state.lng];\n\n for(const [i, weatherPoint] of this.state.weatherPoints.entries()){\n var markerPosition = [weatherPoint.latitude, weatherPoint.longitude];\n\n if(weatherPoint.current){\n defaultPosition = markerPosition;\n }\n\n markers.push(\n \n \n {weatherPoint.name}\n \n \n );\n }\n\n return (\n \n \n \n {markers}\n \n \n )\n }\n\n render() {\n let contents = this.state.loading ?
: this.renderMap();\n\n\t\treturn (contents);\n }\n}","import React from 'react';\nimport { Chart } from 'chart.js';\nimport { Line } from 'react-chartjs-2';\n\nexport function TideChart(props) {\n if (!props.data) {\n return (
Tide data not available at this time.
);\n }\n\n const data = JSON.parse(props.data.value),\n min = Math.min.apply(null, data),\n max = Math.max.apply(null, data);\n\n const chartData = (canvas) => {\n const ctx = canvas.getContext(\"2d\"),\n gradient = ctx.createLinearGradient(0, 0, 0, 150);\n\n gradient.addColorStop(0, Chart.helpers.color('#2c8ef8').alpha(0.5).rgbString());\n gradient.addColorStop(0.5, Chart.helpers.color('#2c8ef8').alpha(0.2).rgbString());\n gradient.addColorStop(1, Chart.helpers.color('#2c8ef8').alpha(0).rgbString());\n\n return {\n labels: JSON.parse(props.data.date),\n datasets: [\n {\n fill: 'start',\n lineTension: 0.5,\n backgroundColor: gradient,\n borderColor: '#2c8ef8',\n borderWidth: 1,\n data: JSON.parse(props.data.value)\n }\n ]\n }\n }\n\n return (\n
\n \n
\n );\n}","import React from 'react';\nimport moment from 'moment';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faArrowDown, faArrowUp } from '@fortawesome/free-solid-svg-icons'\nimport NumberFormat from 'react-number-format';\n\nexport class TideClock extends React.Component {\n constructor(props) {\n super(props);\n\n this.tick = this.tick.bind(this);\n this.state = {\n data: this.props.data,\n nextTide: null,\n nextTideTime: null,\n nextTideType: null,\n nextTideTypeSystemName: null,\n nextTideTypeDescription: null\n };\n }\n\n componentDidMount() {\n this.tick();\n\n this.timerID = setInterval(\n () => this.tick(),\n 1000\n );\n }\n\n componentWillUnmount() {\n clearInterval(this.timerID);\n }\n\n tick() {\n const now = moment();\n\n for (const [i, tide] of this.state.data.entries()) {\n const tideDate = moment(tide.date, \"YYYY-MM-DD HH:mm:ss\");\n\n if (now.isSameOrBefore(tideDate)) {\n this.setState({\n nextTideType: tide.tideType,\n nextTideTypeSystemName: tide.tideTypeSystemName,\n nextTideTypeDescription: tide.tideTypeDescription,\n nextTide: moment.utc(tideDate.diff(now)).format(\"H:mm:ss\"),\n nextTideTime: tideDate.format(\"HH:mm\")\n });\n\n break;\n }\n }\n }\n\n renderClock() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n TIDE\n \n {this.state.nextTideTypeDescription} \n
\n NEXT TURN\n \n {this.state.nextTideTime} ({this.state.nextTideType})\n
\n TIME TO TURN\n \n {this.state.nextTide}\n
\n WATER TEMP\n \n °C\n
\n
\n );\n }\n\n render() {\n let contents = this.props.data ? this.renderClock() :
;\n\n return (contents);\n }\n}","import React from 'react';\nimport { Card, CardTitle, CardBody, Row, Col } from 'reactstrap';\nimport { Chart } from 'chart.js';\nimport { Doughnut } from 'react-chartjs-2';\nimport classnames from 'classnames';\nimport NumberFormat from 'react-number-format';\nimport moment from 'moment';\nimport Moment from 'react-moment';\n\nexport function RatingCard(props) {\n const weather = props.data,\n currentDate = new moment();\n\n let rating = parseInt(weather.rating),\n ratingDiff = 10 - rating,\n bgColour = '#28a745',\n displayDate = \"Today\";\n\n if (rating < 7) {\n bgColour = '#ffc107';\n }\n\n if (rating < 4) {\n bgColour = '#dc3545';\n }\n\n const chartData = {\n labels: [rating, ratingDiff],\n datasets: [\n {\n backgroundColor: [\n Chart.helpers.color(bgColour).alpha(1).rgbString(),\n Chart.helpers.color('#f8f9fa').alpha(1).rgbString()\n ],\n borderColor: [bgColour, '#f8f9fa'],\n borderWidth: 1,\n borderColor: 'transparent',\n data: [rating, ratingDiff]\n }\n ]\n }\n\n if (!currentDate.isSame(weather.date, 'day')) {\n displayDate = {weather.date};\n }\n\n return (\n \n \n
{displayDate}
\n {weather.date}\n
\n \n \n \n \n {weather.weatherForecastName}\n \n \n \n \n
\n \n
\n \n \n
°
\n \n
\n \n \n
\n {rating}/10\n
\n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n SWELL HEIGHT\n m\n
\n
\n
\n WAVE HEIGHT\n m\n
\n
\n
\n WIND\n kts\n
\n
\n
\n GUSTS\n kts\n
\n
\n
\n
\n
\n );\n}","import React from 'react';\nimport { Table, TabPane } from 'reactstrap';\nimport classnames from 'classnames';\nimport moment from 'moment';\nimport Moment from 'react-moment';\nimport NumberFormat from 'react-number-format';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faWater, faBreadSlice } from '@fortawesome/free-solid-svg-icons'\n\nfunction RatingBadge(props) {\n var className = \"badge-danger\";\n\n if (props.rating > 3) {\n className = \"badge-warning\";\n }\n if (props.rating > 6) {\n className = \"badge-success\";\n }\n if (props.muted) {\n className = \"badge-light\";\n }\n\n return ({props.rating});\n}\n\nfunction getSwellWindDirectionClass(direction, muted) {\n var className = \"\";\n\n switch (direction) {\n case \"Offshore\":\n case \"Crossoff\":\n className = \"text-success\";\n break;\n case \"Crossoff\":\n className = \"text-warning\";\n break;\n case \"Cross\":\n className = \"text-warning\";\n break;\n case \"Onshore\":\n className = \"text-danger\";\n break;\n }\n\n if (muted) {\n className = \"text-muted\";\n }\n\n return \"text-center \" + className;\n}\n\nexport class WeatherTab extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n tabId: props.tabId,\n date: props.date,\n currentHour: props.currentHour,\n weatherData: props.weatherData,\n tideDate: props.tideData,\n activeHour: 1\n };\n }\n\n componentDidMount() {\n this.state.weatherData.forEach((weather, i) => {\n if (weather.currentHour) {\n this.setState({ activeHour: i });\n }\n });\n }\n\n componentWillUnmount() { }\n\n toggleActiveHour = (hour) => {\n this.props.onSelectHour(hour);\n this.setState({ activeHour: hour });\n }\n\n renderWeatherTab() {\n var currentHours = new moment(this.state.currentHour, 'YYYY-MM-DD HH:mm:ss').hours(),\n mute = moment().isSame(this.state.date, 'day');\n\n return (\n \n \n \n \n \n {this.state.weatherData.map((weather, i) =>\n \n )}\n \n \n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n \n {this.state.weatherData.map(weather =>\n \n )}\n \n \n
  { this.toggleActiveHour(i); }}\n >\n
\n \n {weather.date}\n \n
\n
Surf rating\n \n
Wind
Max gust (kts)\n \n
Wind speed (kts)\n \n
Wind direction\n } />\n
{weather.swellWindDirection}
\n
Swell
Wave height (m)\n \n
Period (sec)\n \n
Swell height (m)\n \n
Swell direction\n } />\n
\n
\n );\n }\n\n render() {\n return (this.renderWeatherTab());\n }\n}","import React, { Component } from 'react';\r\nimport { Spinner, Card, CardTitle, CardBody, CardImg } from 'reactstrap';\r\nimport { TabContent, Nav, NavItem, NavLink, Row, Col, Badge } from 'reactstrap';\r\nimport classnames from 'classnames';\r\nimport moment from 'moment';\r\nimport Moment from 'react-moment';\r\nimport { ForecastMap } from './ForecastMap';\r\nimport { TideChart } from './TideChart';\r\nimport { TideClock } from './TideClock';\r\nimport { RatingCard } from './RatingCard';\r\nimport { WeatherTab } from './WeatherTab';\r\n\r\n\r\nfunction WeatherNav(props) {\r\n\tvar currentDate = new moment(),\r\n\t\tdisplayDate = \"TODAY\",\r\n\t\tweather = props.weather,\r\n\t\tweatherClassName,\r\n\t\trating = 1;\r\n\r\n\tif (!currentDate.isSame(props.date, 'day')) {\r\n\t\tdisplayDate = {props.date};\r\n\t}\r\n\r\n\tfor (var i = 0; i < weather.length; i++) {\r\n\t\tvar weatherDate = new moment(weather[i].date, 'YYYY-MM-DD HH:mm:ss'),\r\n\t\t\tweatherHours = weatherDate.hours();\r\n\r\n\t\tif (currentDate.isSame(props.date, 'day')) {\r\n\t\t\tif (weather[i].currentHour) {\r\n\t\t\t\tweatherClassName = weather[i].weatherForecastIconClass;\r\n\t\t\t\trating = weather[i].rating;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (weatherHours == 10) {\r\n\t\t\t\tweatherClassName = weather[i].weatherForecastIconClass;\r\n\t\t\t}\r\n\t\t\trating = weather[i].rating > rating ? weather[i].rating : rating;\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{displayDate}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{props.date}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{rating}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport class Forecast extends Component {\r\n\tstatic displayName = Forecast.name;\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tconst { systemName } = this.props.match.params;\r\n\t\tthis.toggleTab = this.toggleTab.bind(this);\r\n\t\tthis.state = { systemName: systemName, forecasts: null, loading: true, activeTab: '0', activeHours: [] };\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tconst { systemName } = this.props.match.params;\r\n\r\n\t\tthis.populateWeatherData(systemName);\r\n\t}\r\n\r\n\tasync populateWeatherData(systemName) {\r\n\t\tconst response = await fetch('WeatherForecast/Forecast/' + systemName);\r\n\t\tconst data = await response.json();\r\n\t\tthis.setState({ forecasts: data, loading: false });\r\n\t}\r\n\r\n\thandleActiveHour = (activeHour) => {\r\n\t\tlet activeHours = this.state.activeHours;\r\n\t\tactiveHours[this.state.activeTab] = activeHour;\r\n\t\tthis.setState({ activeHours: activeHours });\r\n\t}\r\n\r\n\ttoggleTab(tab) {\r\n\t\tif (this.state.activeTab !== tab) {\r\n\t\t\tthis.setState({ activeTab: tab });\r\n\t\t}\r\n\t}\r\n\r\n\trenderDays() {\r\n\t\tconst createMarkup = htmlString => ({ __html: htmlString }),\r\n\t\t\tcurrentForecast = this.state.forecasts[this.state.activeTab],\r\n\t\t\tweatherData = JSON.parse(currentForecast.weatherJSON);\r\n\r\n\t\tlet currentForecastHour = weatherData[this.state.activeHours[this.state.activeTab]];\r\n\r\n\t\tif (!currentForecastHour) {\r\n\t\t\tfor (const [i, weather] of JSON.parse(currentForecast.weatherJSON).entries()) {\r\n\t\t\t\tif (this.state.activeTab == '0') {\r\n\t\t\t\t\tif (weather.currentHour) {\r\n\t\t\t\t\t\tcurrentForecastHour = weather;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (moment(weather.date, 'YYYY-MM-DD HH:mm:ss').hours() === 10) {\r\n\t\t\t\t\t\tcurrentForecastHour = weather;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

{this.state.forecasts[0].name}

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{this.state.forecasts.map((forecast, i) =>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
Tide
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{currentForecast.date}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
Map
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet contents = this.state.loading ?
: this.renderDays();\r\n\r\n\t\treturn (contents);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Location } from './components/Location';\r\nimport { Forecast } from './components/Forecast';\r\n\r\nimport './css/custom.css'\r\nimport './css/weather-icons.css'\r\nimport './css/weather-icons-wind.css'\r\n\r\nexport default class App extends Component {\r\n\tstatic displayName = App.name;\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n\twindow.location.hostname === 'localhost' ||\r\n\t// [::1] is the IPv6 localhost address.\r\n\twindow.location.hostname === '[::1]' ||\r\n\t// 127.0.0.1/8 is considered localhost for IPv4.\r\n\twindow.location.hostname.match(\r\n\t\t/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n\t)\r\n);\r\n\r\nexport default function register() {\r\n\tif (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n\t\t// The URL constructor is available in all browsers that support SW.\r\n\t\tconst publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n\t\tif (publicUrl.origin !== window.location.origin) {\r\n\t\t\t// Our service worker won't work if PUBLIC_URL is on a different origin\r\n\t\t\t// from what our page is served on. This might happen if a CDN is used to\r\n\t\t\t// serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('load', () => {\r\n\t\t\tconst swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n\t\t\tif (isLocalhost) {\r\n\t\t\t\t// This is running on localhost. Lets check if a service worker still exists or not.\r\n\t\t\t\tcheckValidServiceWorker(swUrl);\r\n\t\t\t} else {\r\n\t\t\t\t// Is not local host. Just register service worker\r\n\t\t\t\tregisterValidSW(swUrl);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n\tnavigator.serviceWorker\r\n\t\t.register(swUrl)\r\n\t\t.then(registration => {\r\n\t\t\tregistration.onupdatefound = () => {\r\n\t\t\t\tconst installingWorker = registration.installing;\r\n\t\t\t\tinstallingWorker.onstatechange = () => {\r\n\t\t\t\t\tif (installingWorker.state === 'installed') {\r\n\t\t\t\t\t\tif (navigator.serviceWorker.controller) {\r\n\t\t\t\t\t\t\t// At this point, the old content will have been purged and\r\n\t\t\t\t\t\t\t// the fresh content will have been added to the cache.\r\n\t\t\t\t\t\t\t// It's the perfect time to display a \"New content is\r\n\t\t\t\t\t\t\t// available; please refresh.\" message in your web app.\r\n\t\t\t\t\t\t\tconsole.log('New content is available; please refresh.');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// At this point, everything has been precached.\r\n\t\t\t\t\t\t\t// It's the perfect time to display a\r\n\t\t\t\t\t\t\t// \"Content is cached for offline use.\" message.\r\n\t\t\t\t\t\t\tconsole.log('Content is cached for offline use.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.error('Error during service worker registration:', error);\r\n\t\t});\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n\t// Check if the service worker can be found. If it can't reload the page.\r\n\tfetch(swUrl)\r\n\t\t.then(response => {\r\n\t\t\t// Ensure service worker exists, and that we really are getting a JS file.\r\n\t\t\tif (\r\n\t\t\t\tresponse.status === 404 ||\r\n\t\t\t\tresponse.headers.get('content-type').indexOf('javascript') === -1\r\n\t\t\t) {\r\n\t\t\t\t// No service worker found. Probably a different app. Reload the page.\r\n\t\t\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\t\t\tregistration.unregister().then(() => {\r\n\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// Service worker found. Proceed as normal.\r\n\t\t\t\tregisterValidSW(swUrl);\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(() => {\r\n\t\t\tconsole.log(\r\n\t\t\t\t'No internet connection found. App is running in offline mode.'\r\n\t\t\t);\r\n\t\t});\r\n}\r\n\r\nexport function unregister() {\r\n\tif ('serviceWorker' in navigator) {\r\n\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\tregistration.unregister();\r\n\t\t});\r\n\t}\r\n}\r\n","//import './css/custom.scss';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport 'react-leaflet-markercluster/dist/styles.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n\t\r\n\t\t\r\n\t,\r\n\trootElement);\r\n\r\nregisterServiceWorker();\r\n\r\n"],"sourceRoot":""}