{"version":3,"sources":["API.js","ResultsTable2.js","EventListing.js","GridExample.js","App.js","serviceWorker.js","index.js","home.svg","logo.png"],"names":["API","this","urlBase","apiBase","standardTimeout","data","done","notFound","fail","url","encodeURIComponent","event_id","$","ajax","timeout","competitors","xhr","status","console","log","club","category","date","d","Date","month","getMonth","day","getDate","year","getFullYear","length","join","ResultsTable2","props","document","title","theevent","name","page","className","moment","event_date","format","results","filename","style","height","width","columns","checkpoints","defaultSorted","sortorder","showPagination","pageSize","minRows","Component","EventListing","getEventsData","state","events","map","anevent","scope","href","id","api","idleTimeout","theApp","getevents","setState","class","GridExample","onGridReady","params","gridApi","gridColumnApi","columnApi","httpRequest","XMLHttpRequest","open","send","onreadystatechange","readyState","JSON","parse","responseText","rowData","columnDefs","headerName","field","sort","unSortIcon","comparator","dateComparator","defaultColDef","sortable","date1","date2","date1Number","monthToComparableNumber","date2Number","undefined","substring","render","querySelector","App","time","now","myevent","rotatePages","numPages","competitor_event_results","searchParams","URLSearchParams","window","location","search","get","loadData","getevent","getData","interval","setInterval","clearInterval","resultsbyclub","resultsbycategory","ref","element","idleAction","startAgain","onClick","e","src","home","alt","logo","screen","Boolean","hostname","match","ReactDOM","getElementById","navigator","serviceWorker","ready","then","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.3561765f.chunk.js","sourcesContent":["import $ from 'jquery';\r\n\r\nclass API {\r\n constructor() {\r\n this.urlBase = 'https://events360.co.uk/';\r\n this.apiBase = this.urlBase + 'api/api/';\r\n this.standardTimeout = 30 * 1000;\r\n }\r\n\r\n competitors(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'competitors/?event_id=' + encodeURIComponent(data.event_id);\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data.competitors);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n checkpoints(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'checkpoints/?event_id=' + encodeURIComponent(data.event_id) + \"&temp=1\";\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n getevent(event_id, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'events/?id=' + encodeURIComponent(event_id) + '&token=abc';\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n getevents(done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'events/';\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n\t\tconsole.log(data);\r\n\t\tdone(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n \r\n sortorder(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'sortorder/?event_id=' + encodeURIComponent(data.event_id);\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n results(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'results/?event_id=' + encodeURIComponent(data.event_id);\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n resultsbyclub(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'results/?event_id=' + encodeURIComponent(data.event_id) + '&club=' + encodeURIComponent(data.club);\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n resultsbycategory(data, done, notFound, fail) {\r\n var url = this.apiBase +\r\n 'results/?event_id=' + encodeURIComponent(data.event_id) + '&category=' + encodeURIComponent(data.category);\r\n\r\n $.ajax({\r\n url: url,\r\n timeout: this.standardTimeout\r\n }).done(function(data) {\r\n done(data);\r\n }).fail(function(xhr) {\r\n if (xhr.status === 404) {\r\n notFound();\r\n } else {\r\n fail();\r\n }\r\n });\r\n }\r\n\r\n formatDate(date) {\r\n var d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) {\r\n month = '0' + month;\r\n }\r\n if (day.length < 2) {\r\n day = '0' + day;\r\n }\r\n\r\n return [year, month, day].join('-');\r\n }\r\n \r\n accessHeaders() {\r\n return {\r\n\t\t\"Accept\": \"application/json\", \"Content-Type\": \"application/json\"\r\n };\r\n }\r\n\r\n}\r\n\r\nexport default API;\r\n","\r\n//import React from 'react';\r\n//import Table from './components/Table';\r\n\r\nimport React, { Component } from \"react\";\r\nimport { render } from \"react-dom\";\r\nimport moment from 'moment';\r\n\r\nimport ReactTable from 'react-table'\r\nimport 'react-table/react-table.css'\r\nimport { CSVLink, CSVDownload } from \"react-csv\";\r\n\r\n\r\nclass ResultsTable2 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\tdocument.title = this.props.theevent.name + \" results\";\r\n\t\r\n}\r\n\r\nrender() {\r\n\tif (this.props.page == \"-1\")\r\n\t{\r\n return(\r\n
\r\n\t

{this.props.theevent.name} - {moment(this.props.theevent.event_date).format('DD/MM/YYYY')}

\r\n\tDownload as csv\r\n\t

\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n
\r\n
\r\n );\t\r\n\t}\r\n\telse\r\n\t{\r\n return(\r\n
\r\n\t

{this.props.theevent.name} - {moment(this.props.theevent.event_date).format('DD/MM/YYYY')}

\r\n\t
\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n
\r\n
\r\n );\t\r\n\t\t\r\n\t}\r\n}\r\n\r\n}\r\n \r\nexport default ResultsTable2;\r\n","\r\n//import React from 'react';\r\n//import Table from './components/Table';\r\n\r\nimport React, { Component } from \"react\";\r\nimport { render } from \"react-dom\";\r\n\r\nimport moment from 'moment';\r\n\r\nimport API from './API';\r\nimport './App.css';\r\n\r\nclass EventListing extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.api = new API();\r\n this.idleTimeout = 30 * 60 * 1000;\r\n\t\r\n this.state = {\r\n\t\tevents: []\r\n };\r\n\r\n}\r\n\r\ncomponentDidMount() {\r\n\tlet theApp = this;\r\n\t\r\n\tthis.api.getevents(function done(data) {\r\n\t if (data) {\r\n\t\t console.log(data);\r\n\t\t theApp.setState(\r\n\t\t\ttheApp.state.events = data\r\n\t\t\t)\r\n\t }\r\n\t}, function notFound() {\r\n\t // not found\r\n\t\tconsole.log('not found');\r\n\t}, function fail(xhr) {\r\n\t console.log(xhr);\r\n\t //onFail();\r\n\t});\r\n}\r\n\r\nrender() {\r\n return(\r\n
\r\n\t\t

Events

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getEventsData()}\r\n \r\n
Event nameDate
\r\n
\r\n );\t\r\n}\r\n\r\n\r\ngetEventsData = function(){\r\n return this.state.events.map(anevent => {\r\n return (\r\n\t\t\t\r\n \r\n {anevent.name}\r\n {moment(anevent.event_date).format('DD/MM/YYYY')}\r\n View results\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 EventListing;\r\n","\"use strict\";\n\nimport React, { Component } from \"react\";\nimport { render } from \"react-dom\";\nimport { AgGridReact } from \"ag-grid-react\";\n\nclass GridExample extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n columnDefs: [\n {\n headerName: \"Athlete\",\n field: \"athlete\",\n width: 150,\n sort: \"desc\"\n },\n {\n headerName: \"Age\",\n field: \"age\",\n width: 90\n },\n {\n headerName: \"Country\",\n field: \"country\",\n width: 120\n },\n {\n headerName: \"Year\",\n field: \"year\",\n width: 90,\n unSortIcon: true\n },\n {\n headerName: \"Date\",\n field: \"date\",\n width: 110,\n comparator: dateComparator\n },\n {\n headerName: \"Sport\",\n field: \"sport\",\n width: 110\n },\n {\n headerName: \"Gold\",\n field: \"gold\",\n width: 100\n },\n {\n headerName: \"Silver\",\n field: \"silver\",\n width: 100\n },\n {\n headerName: \"Bronze\",\n field: \"bronze\",\n width: 100\n },\n {\n headerName: \"Total\",\n field: \"total\",\n width: 100\n }\n ],\n defaultColDef: { sortable: true },\n rowData: null\n };\n }\n\n onGridReady = params => {\n this.gridApi = params.api;\n this.gridColumnApi = params.columnApi;\n\n const httpRequest = new XMLHttpRequest();\n const updateData = data => {\n this.setState({ rowData: data });\n };\n\n httpRequest.open(\n \"GET\",\n \"https://raw.githubusercontent.com/ag-grid/ag-grid/master/packages/ag-grid-docs/src/olympicWinnersSmall.json\"\n );\n httpRequest.send();\n httpRequest.onreadystatechange = () => {\n if (httpRequest.readyState === 4 && httpRequest.status === 200) {\n updateData(JSON.parse(httpRequest.responseText));\n }\n };\n };\n\n render() {\n return (\n
\n \n \n
\n \n );\n }\n}\n\nfunction dateComparator(date1, date2) {\n var date1Number = monthToComparableNumber(date1);\n var date2Number = monthToComparableNumber(date2);\n if (date1Number === null && date2Number === null) {\n return 0;\n }\n if (date1Number === null) {\n return -1;\n }\n if (date2Number === null) {\n return 1;\n }\n return date1Number - date2Number;\n}\nfunction monthToComparableNumber(date) {\n if (date === undefined || date === null || date.length !== 10) {\n return null;\n }\n var yearNumber = date.substring(6, 10);\n var monthNumber = date.substring(3, 5);\n var dayNumber = date.substring(0, 2);\n var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;\n return result;\n}\n\nrender(, document.querySelector(\"#root\"));\n\nexport default GridExample;","import 'bootstrap/dist/css/bootstrap.min.css';\n\nimport React, { Component } from 'react';\nimport IdleTimer from 'react-idle-timer';\nimport API from './API';\nimport './App.css';\nimport home from './home.svg';\nimport logo from './logo.png';\nimport ResultsTable2 from './ResultsTable2';\nimport EventListing from './EventListing';\n\nimport GridExample from './GridExample';\n\n\nclass App extends Component {\n constructor(props) {\n super(props);\n\t\n\tdocument.title = \"events360 Race results\";\n\n this.api = new API();\n this.idleTimeout = 30 * 60 * 1000;\n\t\n this.state = {\n\t\tevent_id: null,\n\t\tclub: '',\n\t\tcategory: '',\n\t\ttime: Date.now(),\n\t\tcompetitors: [],\n\t\tcheckpoints: [],\n\t\tmyevent: null,\n\t\tpage: \"-1\",\n\t\trotatePages: \"N\",\n\t\tnumPages: 0,\n\t\tcompetitor_event_results: [],\n\t\tdefaultColDef: { sortable: true, width: 150},\n\t\tsortorder: [{\n \"id\": \"positionIndex\",\n \"desc\": false\n\t\t}]\n };\n\t\n\tconst searchParams = new URLSearchParams(window.location.search);\n\tthis.state.event_id = searchParams.get('event_id');\n\tthis.state.club = searchParams.get('club');\n\tthis.state.category = searchParams.get('cat');\n\t\n\tif (searchParams.get('page') != \"\")\n\t{\n\t\tthis.state.rotatePages = searchParams.get('page');\n\t}\n }\n \n \n\tcomponentDidMount() {\n\t\t\n\t\tif (this.state.event_id != null && this.state.event_id != \"\")\n\t\t{\n\t\t\tthis.loadData();\n\t\t\tlet theApp = this;\n\t\t\tif (theApp.state.myevent == null)\n\t\t\t{\n\t\t\t\tthis.api.getevent(this.state.event_id, function done(data) {\n\t\t\t\tif (data)\n\t\t\t\t\t{\n\t\t\t\t\t\ttheApp.setState({myevent : data})\n\t\t\t\t\t}\n\t\t\t\t}, function notFound() {\n\t\t\t\t\t// not found\n\t\t\t\t\tconsole.log('not found');\n\t\t\t\t}, function fail(xhr) {\n\t\t\t\t\tconsole.log(xhr);\n\t\t\t\t\t//onFail();\n\t\t\t\t});\n\t\t\t}\n\t\tthis.getData();\n\n\t\t\tthis.interval = setInterval(() => this.getData(), 10000);\n\t\t}\n }\n\t\n\tcomponentWillUnmount() {\n\t\tclearInterval(this.interval);\n\t}\n\t\n\n\t\n \n getData()\n {\n\t let theApp = this;\n\t \n\t \tthis.api.checkpoints(this.state, function done(data) {\n\t if (data) {\n\t\t theApp.state.checkpoints = data;\n\t\t\t//theApp.state.checkpoints.push(data)\n\t\t//theApp.state.competitor_event_results_full.push(data)\n\t }\n\t}, function notFound() {\n\t // not found\n\t\tconsole.log('not found');\n\t}, function fail(xhr) {\n\t console.log(xhr);\n\t //onFail();\n\t});\n\n\tif (this.state.club != null)\n\t{\n\t\t this.api.resultsbyclub(this.state, function done(data) {\n\t\t if (data) {\n\t\t\t theApp.setState(\n\t\t\t\ttheApp.state.competitor_event_results = data\n\t\t\t\t)\n\t\t\t\ttheApp.state.numPages = (data.length / 100);\n\t\t }\n\t\t}, function notFound() {\n\t\t // not found\n\t\t\tconsole.log('not found');\n\t\t}, function fail(xhr) {\n\t\t console.log(xhr);\n\t\t //onFail();\n\t\t});\n\t}\n\telse if (this.state.category != null)\n\t{\n\t\t this.api.resultsbycategory(this.state, function done(data) {\n\t\t if (data) {\n\t\t\t theApp.setState(\n\t\t\t\ttheApp.state.competitor_event_results = data\n\t\t\t\t)\n\t\t\t\ttheApp.state.numPages = (data.length / 100);\n\t\t }\n\t\t}, function notFound() {\n\t\t // not found\n\t\t\tconsole.log('not found');\n\t\t}, function fail(xhr) {\n\t\t console.log(xhr);\n\t\t //onFail();\n\t\t});\n\t}\n\telse\n\t{\n\t\t this.api.results(this.state, function done(data) {\n\t\t if (data) {\n\t\t\t theApp.setState(\n\t\t\t\ttheApp.state.competitor_event_results = data\n\t\t\t\t)\n\t\t\t\ttheApp.state.numPages = (data.length / 100);\n\t\t }\n\t\t}, function notFound() {\n\t\t // not found\n\t\t\tconsole.log('not found');\n\t\t}, function fail(xhr) {\n\t\t console.log(xhr);\n\t\t //onFail();\n\t\t});\n\t}\n\t\n\tif (this.state.rotatePages == \"Y\")\n\t{\n\t\tif (this.state.page < (this.state.numPages-1))\n\t\t{\n\t\t\tthis.state.page = this.state.page + 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.state.page = 0;\n\t\t}\n\t}\n }\n \n loadData() {\n\t\tlet theApp = this;\n }\n\n render() {\n\t \n\t if (this.state.event_id == null || this.state.event_id == \"\")\n\t {\n\t\t return (\n this.startAgain()}\n timeout={this.idleTimeout}\n format=\"MM-DD-YYYY HH:MM:ss.SSS\">\n
\n
\n this.startAgain(e)}>\n \"[Home]\"/\n \n \"Events360\"\n
\n
\n\t\t\t\n
\n
\n \n\t\t\t\t\t\t )\n\t }\n\t else\n\t {\n\n\t if (this.state.myevent == null) {\n return (\n this.startAgain()}\n timeout={this.idleTimeout}\n format=\"MM-DD-YYYY HH:MM:ss.SSS\">\n
\n
\n this.startAgain(e)}>\n \"[Home]\"/\n \n \"Events360\"\n
\n
\n\t\t\t

No event found

\n
\n
\n \n\t\t\t\t\n\t\t\t)\n }\n return (\n this.startAgain()}\n timeout={this.idleTimeout}\n format=\"MM-DD-YYYY HH:MM:ss.SSS\">\n
\n \n
\n\t\t\t{this.screen()}\n
\n
\n \n );\n\t }\n }\n\n screen() {\n\t //this.interval = setInterval(() => this.getData(), 10000);\n return \n\t//return ;\n }\n \n}\n\nexport default App;\n\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/home.91dbc10d.svg\";","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""}