{"version":3,"sources":["assets/Img_Logo_01.png","assets/Img_Logo_02.png","assets/Img_Logo_03.png","assets/Img_Logo_04.png","assets/Img_Logo_05.png","assets/LiveLines.png","fonts/SpartanMB-Regular.otf","features/odds/components/header.tsx","helpers.ts","Api.ts","features/helpers/oddsRenderer.tsx","features/helpers/noResults.tsx","features/helpers/errorResults.tsx","features/helpers/spinner.tsx","helpers/getSortReturn.ts","features/oddsTable/components/Cell.tsx","features/odds/components/table.tsx","helpers/useDetectOverflow.ts","features/odds/components/oddsPage.tsx","features/history/components/header.tsx","features/history/components/body.tsx","features/history/components/history.tsx","features/helpers/conditionalLink.tsx","features/matchup/components/header.tsx","features/matchup/components/upcomingEventsTable.tsx","features/matchup/components/body.tsx","features/matchup/components/matchup.tsx","features/helpers/poweredByFooter.tsx","features/summaryPages/components/latestOdds.tsx","features/upcomingEvents/components/upcomingEvents.tsx","features/helpers/page.tsx","App.tsx","serviceWorker.ts","features/helpers/errorBoundary.tsx","index.tsx"],"names":["module","exports","Header","props","state","dispatch","eventList","React","useEffect","listLines","flatMap","event","ListParticipants","participant","ListLines","length","hasData","filter","x","LinesType","some","Id","candidate","priority1","priority2","lineType","type","setFallbackLineType","currentLabel","categories","find","c","value","selectedCategory","className","label","sportsDropdownVisible","isDisabled","loading","onChange","selection","e","category","isLoading","isSearchable","classNamePrefix","options","getSportsbookLink","sportsbooks","id","sb","Link","getSportsbookImageById","Dimes","DSI","Intertops","Pinnacle","Sports411","getSportsbookImageByName","name","Error","getFractionOdds","number","integer","decimal","sign","parseFloat","indexOf","substr","fraction","getFraction","getParamValue","paramName","qArray","window","location","search","substring","split","i","pArr","toLowerCase","apiUrl","instance","axios","create","baseURL","responseType","headers","Accept","document","referrer","reqHandler","isFetchingToken","pendingRequests","addToQueue","callback","push","onTokenFetched","token","forEach","cb","clearQueue","this","interceptors","response","use","fulfilled","rejected","status","refreshAccessToken","Promise","reject","a","errorResponse","tokenDetailsString","localStorage","getItem","awaitingNewToken","resolve","config","Authorization","data","Key","post","errors","AccessToken","details","setItem","RenderOdds","odds","toString","fracOdds","dangerouslySetInnerHTML","__html","renderOddsForChart","NoResults","style","display","justifyContent","alignItems","width","size","paddingRight","ErrorResults","Spinner","color","skin","getSortReturn","b","aOrderNum","bOrderNum","res","SportsbooksID","Cell","children","text","title","href","onClick","getCellClassName","boldText","greyText","noPaddingLeft","buttonCell","placeholder","overflowVisible","additionalClassNames","cellTitle","cursor","open","Table","useState","collapsedRows","setCollapsedRows","dependencies","overflow","setOverflow","handleResize","element","getElementById","scrollWidth","offsetWidth","addEventListener","removeEventListener","useMemo","useCallback","useDetectOverflow","errorResults","setErrorResults","showBetNowButton","betNowLink","groupedEvents","allButFirstGroupIds","_","map","g","groupId","loadingInitialState","params","categoriesID","then","tEventList","ListEvents","listGroups","ListGroups","groupedEventList","groupEvents","tLinesTypes","lineTypes","t","tSportsBooks","s","Name","p","sort","l","includes","Sportsbook","catch","err","console","log","buildHeaders","book","key","src","alt","handleToggleRowCollapse","r","buildTableData","linesType","group","Fragment","k","line","j","sportsbook","Value","Price","LinesOUType","buildButtonsColumn","page","minWidth","maxWidth","appError","selectedLinesType","groupName","format","Date","join","buildEventsColumn","groupList","groupedEventsList","GroupsID","GroupName","groupOther","OddsPage","body","setAttribute","removeAttribute","updateSwiper","handleBackClick","headerDetails","awayName","homeName","date","getSwiper","slidesPerView","watchOverflow","breakpoints","1024","768","425","navigation","nextEl","prevEl","activeSb","setActiveSb","backgroundImage","timeOptions","ToolTipView","team1","team2","payload","team01Label","price","team02Label","renderCustomDot","team","circleRadius","radiusMultiplier","stroke","fill","cx","cy","Body","spreadChartData","moneyChartData","totalChartData","selectedLines","adjustChartData","adjustedData","handleSpreadTimeFilterChange","handleSpreadTimeFrameChange","handleMoneyTimeFilterChange","handleMoneyTimeFrameChange","handleTotalTimeFilterChange","handleTotalTimeFrameChange","Spread","History","spreadHistory","modifiedTeam01Labels","reverse","h","UpdateDate","getTime","team01","Price01","time","Value01","team02","Price02","Value02","d","modifiedTeam02Labels","Money","moneyHistory","Total","totalHistory","linesAccess","defaultValue","height","spreadDataLoading","margin","top","right","bottom","left","dataKey","axisLine","tickLine","padding","tickFormatter","unixTime","domain","strokeDasharray","labelFormatter","content","verticalAlign","iconType","iconSize","animationDuration","connectNulls","dot","y","moneyDataLoading","contentStyle","fontSize","totalDataLoading","Abbreviation01","Abbreviation02","awayAbbr","homeAbbr","HistoryPage","setSportsbooks","setHeaderDetails","setLoading","setSpreadDataLoading","setMoneyDataLoading","setTotalDataLoading","spreadTimeFilter","moneyTimeFilter","totalTimeFilter","scrollTo","eventsID","selectedEvent","Sportsbooks","AwayName","AwayAbbreviation","HomeName","HomeAbbreviation","timeFrame","setTimeout","copySportsbooks","foundIndex","findIndex","ConditionalLink","link","target","rel","onlyOneLine","matchup","PredictedScore","PredictedScoreRatio","sbId","BestSpreadSportsbooksID","BestSpreadValue","BestSpreadPrice","parseInt","BestMoneySportsbooksID","BestMoneyPrice","CompSpreadPriceRatio","toFixed","CompSpreadValue","CompMoneyPriceRatio","CompTotalPriceRatio","CompTotalValue","UpcomingEventsTable","hasOverflow","setHasOverflow","upcomingEventsTable","offsetHeight","scrollHeight","noPadding","renderLineOdds","foundLine","upcomingEvents","borderLeftColor","position","borderBottomColor","zIndex","flex","selectedTeam","setSelectedTeam","getLineHeaderAbbr","abbr1","abbr2","abbrs","Away","Home","Abbreviation","pastGamesEmpty","pastGames","Games","m","Over","Under","game","EventDate","OppName","AwayScore","HomeScore","Result","ValueSpread","PriceSpread","PriceMoney","ValueTotal","PriceTotal","ConditionalLinkRow","Matchup","setMatchup","setDate","setPastGames","setUpcomingEvents","setOdds","Last10Games","UpcomingEvents","Odds","finally","PoweredByFooter","poweredByLink","LiveLinesLogo","LatestOdds","eventName","setEventName","eventsList","setEventsList","noResults","setNoResults","setLink","eventCountParam","numberOfEvents","linkFromQueryString","lineTypeParam","num","handleViewAllLinesClick","ConditionalLinkCell","Page","reducer","action","currentPage","visible","initialState","App","useReducer","sortAndMapLineTypeOptions","bSelectedInitial","lineTypeOptions","Type","authRes","tCategories","Categories","DisplayName","Skin","OrderNum","BetNowLink","PoweredByLink","LineTypes","initialSport","pageSet","foundCategory","configureQueryStringSettings","useChangeBodyColour","Boolean","hostname","match","Error500","ErrorBoundary","hasError","componentDidCatch","error","info","setState","Component","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.f105e82f.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Img_Logo_01.98001219.png\";","module.exports = __webpack_public_path__ + \"static/media/Img_Logo_02.60d19f00.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAB4CAYAAAApDe1iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkE1REI0NzVFMTQxMTFFOUJBREE5ODJDQTkwNjg2QkMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkE1REI0NzRFMTQxMTFFOUJBREE5ODJDQTkwNjg2QkMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTA2NTBFNjdEMEFFMTFFOTk0NUJGNzg5MEZGNEFENTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTA2NTBFNjhEMEFFMTFFOTk0NUJGNzg5MEZGNEFENTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4fjUuNAAASMUlEQVR42uyd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\"","module.exports = __webpack_public_path__ + \"static/media/Img_Logo_04.ef2a6457.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAB4CAYAAAApDe1iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDE2MDJFRTlFMTQxMTFFOTk2M0Y5NjQyNjM0NkUyOEUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDE2MDJFRThFMTQxMTFFOTk2M0Y5NjQyNjM0NkUyOEUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUQzMUM5NkZEMEFFMTFFOUE4MEVGREEwRjQ4QTBDN0MiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUQzMUM5NzBEMEFFMTFFOUE4MEVGREEwRjQ4QTBDN0MiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5SX1uwAAAbq0lEQVR42uxd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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJwAAAApCAYAAADAv0CLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAzMkEyN0E4NDFCRjExRUE5OEM5RTRGMkExMTQyNEY0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAzMkEyN0E5NDFCRjExRUE5OEM5RTRGMkExMTQyNEY0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDMyQTI3QTY0MUJGMTFFQTk4QzlFNEYyQTExNDI0RjQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDMyQTI3QTc0MUJGMTFFQTk4QzlFNEYyQTExNDI0RjQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5DJZneAAAN0UlEQVR42uxdCZQU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\"","module.exports = __webpack_public_path__ + \"static/media/SpartanMB-Regular.6e3ac162.otf\";","import React from \"react\";\r\nimport \"../styles/header.css\";\r\nimport Select from \"react-select\";\r\nimport { Action, State, SelectOption } from \"../../../App\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n};\r\n\r\nconst Header: React.FC = (props: Props) => {\r\n \r\n const { state, dispatch } = props;\r\n const { eventList } = state\r\n \r\n React.useEffect(() => {\r\n\r\n const listLines = eventList ? eventList\r\n .flatMap(event => event.ListParticipants)\r\n .flatMap(participant => participant.ListLines) : [];\r\n\r\n if (listLines.length > 0) {\r\n\r\n const hasData: Record = {};\r\n hasData[\"Spread\"] = listLines.filter(x => x.LinesType === \"Spread\").some(x => x.Id > -1)\r\n hasData[\"Money\"] = listLines.filter(x => x.LinesType === \"Money\").some(x => x.Id > -1)\r\n hasData[\"Total\"] = listLines.filter(x => x.LinesType === \"Total\").some(x => x.Id > -1)\r\n\r\n const setFallbackLineType = function (candidate: string, priority1: string, priority2: string) {\r\n if (!(hasData[candidate] || hasData[priority1] || hasData[priority2])) return;\r\n if (!hasData[candidate]) {\r\n \r\n const lineType = hasData[priority1] ? priority1 : priority2;\r\n dispatch({ type: \"SET_SELECTED_LINESTYPE\", lineType });\r\n }\r\n }\r\n\r\n setFallbackLineType(\"Spread\", \"Money\", \"Total\");\r\n }\r\n }, [eventList, dispatch])\r\n\r\n const handleCategoryChange = (e: any) => {\r\n if (e.value === props.state.selectedCategory) return;\r\n dispatch({ type: \"SET_SELECTED_CATEGORY\", category: e.value });\r\n dispatch({ type: \"SET_LOADING_STATE\", isLoading: true });\r\n };\r\n\r\n const currentLabel = state.categories.find(c => c.value === props.state.selectedCategory);\r\n\r\n return (\r\n
\r\n
{currentLabel && currentLabel.label}
\r\n
\r\n {state.categories.length > 0 && state.sportsDropdownVisible && (\r\n {\r\n handleCategoryChange(selection);\r\n }}\r\n isSearchable={false}\r\n // defaultValue={categories[0]}\r\n value={\r\n props.state.selectedCategory\r\n ? state.categories.find(c => c.value === props.state.selectedCategory)\r\n : state.categories[0]\r\n }\r\n classNamePrefix=\"Select\"\r\n options={state.categories}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { Header };\r\n","import Dimes from \"./assets/Img_Logo_01.png\";\r\nimport Sports411 from \"./assets/Img_Logo_02.png\";\r\nimport Pinnacle from \"./assets/Img_Logo_03.png\";\r\nimport Intertops from \"./assets/Img_Logo_04.png\";\r\nimport DSI from \"./assets/Img_Logo_05.png\";\r\nimport { Sportsbook } from \"./App\";\r\n\r\nconst getSportsbookLink = (sportsbooks: Sportsbook[], id: number): string => {\r\n const sb = sportsbooks.find(sb => sb.Id === id);\r\n if (!sb || !sb.Link) {\r\n return \"\";\r\n }\r\n return sb.Link;\r\n};\r\n\r\nconst getSportsbookImageById = (id: number) => {\r\n switch (id) {\r\n case 1003:\r\n return Dimes;\r\n case 1053:\r\n return DSI;\r\n case 1025:\r\n return Intertops;\r\n case 1032:\r\n return Pinnacle;\r\n case 1074:\r\n return Sports411;\r\n default:\r\n return \"\";\r\n }\r\n};\r\n\r\nconst getSportsbookImageByName = (name: string) => {\r\n switch (name) {\r\n case \"DSI\":\r\n return DSI;\r\n case \"Sports411\":\r\n return Sports411;\r\n case \"5Dimes\":\r\n return Dimes;\r\n case \"Intertops\":\r\n return Intertops;\r\n case \"Pinnacle\":\r\n return Pinnacle;\r\n default:\r\n throw new Error(\"Bad sportsbook name\");\r\n }\r\n};\r\n\r\nconst getFraction = (decimal: string) => {\r\n switch (decimal) {\r\n case \"0.25\":\r\n return \"¼\";\r\n case \"0.5\":\r\n return \"½\";\r\n case \"0.75\":\r\n return \"¾\";\r\n default:\r\n throw new Error(`${decimal} is not a decimal`);\r\n }\r\n};\r\n\r\nconst getFractionOdds = (number: string) => {\r\n let sign = parseFloat(number) > 0 ? \"+\" : \"-\";\r\n let integer: string;\r\n let decimal: string;\r\n if (number.indexOf(\".25\") > -1) {\r\n integer = number.substr(0, number.indexOf(\".25\"));\r\n decimal = \"0.25\";\r\n } else if (number.indexOf(\".5\") > -1) {\r\n integer = number.substr(0, number.indexOf(\".5\"));\r\n decimal = \"0.5\";\r\n } else if (number.indexOf(\".75\") > -1) {\r\n integer = number.substr(0, number.indexOf(\".75\"));\r\n decimal = \"0.75\";\r\n } else {\r\n return {\r\n integer: number,\r\n fraction: \"\"\r\n };\r\n }\r\n const fraction = getFraction(decimal);\r\n return {\r\n sign: sign,\r\n integer: integer,\r\n fraction: fraction\r\n };\r\n};\r\n\r\nlet getParamValue = (paramName: any) => {\r\n var url = window.location.search.substring(1); //get rid of \"?\" in querystring\r\n var qArray = url.split(\"&\"); //get key-value pairs\r\n for (var i = 0; i < qArray.length; i++) {\r\n var pArr = qArray[i].split(\"=\"); //split key and value\r\n if (pArr[0].toLowerCase() === paramName.toLowerCase()) {\r\n // console.log(pArr[1]);\r\n return pArr[1]; //return value\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n getSportsbookLink,\r\n getSportsbookImageById,\r\n getSportsbookImageByName,\r\n getFractionOdds,\r\n getParamValue\r\n};\r\n","import axios, { AxiosError } from \"axios\";\r\nimport { getParamValue } from \"./helpers\";\r\n\r\nconst devApiUrl =\r\n \"https://quantumsolutionslineswidget-api.dev.avamae.co.uk/api/v1\";\r\nconst liveApiUrl = \"https://widget-api.livelines.com/api/v1\";\r\n\r\nconst apiUrl =\r\n process.env.REACT_APP_LIVE_DEV === \"LIVE\" ? liveApiUrl : devApiUrl;\r\n \r\nconst instance = axios.create({\r\n baseURL: apiUrl,\r\n responseType: \"json\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"iFrame-Referer\": document.referrer\r\n }\r\n});\r\n\r\n/**\r\n * A function that, given an access token, will modify an axios request\r\n * config and re-run the request.\r\n */\r\ntype RequestCallback = (token: string) => void;\r\n\r\n/**\r\n * Some mutable state for a queue of requests. If we're already in the middle of\r\n * requesting a new token, we want to hold other requests in a queue, then make\r\n * them with the new token once we get it.\r\n */\r\nclass RequestHandler {\r\n isFetchingToken: boolean;\r\n private pendingRequests: RequestCallback[];\r\n\r\n constructor() {\r\n this.isFetchingToken = false;\r\n this.pendingRequests = [];\r\n }\r\n\r\n addToQueue = (callback: RequestCallback) => {\r\n this.pendingRequests.push(callback);\r\n };\r\n\r\n onTokenFetched = (token: string) => {\r\n this.pendingRequests.forEach(cb => cb(token));\r\n this.clearQueue();\r\n };\r\n\r\n clearQueue = () => {\r\n this.pendingRequests = [];\r\n this.isFetchingToken = false;\r\n };\r\n}\r\n\r\nconst reqHandler = new RequestHandler();\r\n\r\n// May prove useful later but since only few api calls present in this app, providing headers inline atm\r\n// Before each request, attach the stored token if it exists.\r\n// instance.interceptors.request.use(request => {\r\n// try {\r\n// const tokenDetailsString = localStorage.getItem(\"TOKEN_DETAILS\");\r\n// if (tokenDetailsString === null) throw new Error();\r\n// const tokenDetails = JSON.parse(tokenDetailsString);\r\n// if (tokenDetails.accessToken == null) throw new Error();\r\n// const authHeader = { Authorization: `Bearer ${tokenDetails.accessToken}` };\r\n// return { ...request, headers: { ...request.headers, ...authHeader } };\r\n// } catch (err) {\r\n// return request;\r\n// }\r\n// });\r\n\r\n// After each request, if it comes back with a 401 error, refresh token and then retry.\r\ninstance.interceptors.response.use(\r\n fulfilled => fulfilled,\r\n (rejected: AxiosError) => {\r\n const status = rejected.response ? rejected.response.status : null;\r\n\r\n if (status === 401 /*&& has the expired token header*/) {\r\n // Refresh access token.\r\n return refreshAccessToken(rejected);\r\n }\r\n\r\n // It's not an authorisation issue, just pass on the rejection.\r\n // store.dispatch(signOut());\r\n return Promise.reject(rejected);\r\n }\r\n);\r\n\r\n/**\r\n * Intercept the error, and replace it with a promise (awaitingNewToken), which\r\n * on construction will add a callback to our RequestHandler's queue.\r\n *\r\n * The first time the request handler receives one of these additions to its\r\n * queue, it will attempt to fetch a new access token. It stores up pending\r\n * requests until the new token arrives. To the initial callers it looks like\r\n * their request is waiting for a response from the server.\r\n *\r\n * Once the request handler has fetched a new access token, it will run every\r\n * callback in its queue. The callback takes an original request's config,\r\n * changes it to use the new access token, and remakes the request. It then\r\n * resolves the promise made in awaitingNewToken. The response to this new\r\n * request is thereby delivered to the original caller. The queue is then cleared.\r\n *\r\n * To that initial caller, it just looks like its original request took a while\r\n * to resolve.\r\n */\r\nconst refreshAccessToken = async (rejected: AxiosError) => {\r\n try {\r\n const { response: errorResponse } = rejected;\r\n\r\n // Extract the refresh token from LS and make sure it's there.\r\n // Otherwise, just return the error.\r\n const tokenDetailsString = localStorage.getItem(\"at\");\r\n if (tokenDetailsString === null) return Promise.reject(rejected);\r\n const tokenDetails = tokenDetailsString;\r\n if (tokenDetails == null) return Promise.reject(rejected);\r\n\r\n // Build a promise that will be handed to the caller instead of the error.\r\n const awaitingNewToken = new Promise(resolve => {\r\n reqHandler.addToQueue(token => {\r\n if (errorResponse) {\r\n errorResponse.config.headers.Authorization = `Bearer ${token}`;\r\n resolve(axios(errorResponse.config));\r\n }\r\n });\r\n });\r\n\r\n // Check if we're already trying to fetch a replacement access token.\r\n if (!reqHandler.isFetchingToken) {\r\n reqHandler.isFetchingToken = true;\r\n const data = {\r\n Key: getParamValue(\"Key\")\r\n };\r\n\r\n const response = await axios.post(\r\n apiUrl + \"/generalrole/authmodule/auth\",\r\n data\r\n );\r\n\r\n if (\r\n !response.data ||\r\n (response.data.errors && response.data.errors.length > 0)\r\n ) {\r\n // The refresh request failed, reset the queue, sign the\r\n // user out and return the error.\r\n reqHandler.clearQueue();\r\n return Promise.reject(rejected);\r\n }\r\n\r\n // The refresh request succeeded, save the token details for future\r\n // requests and make the queued requests again.\r\n const {\r\n details: { AccessToken }\r\n } = response.data;\r\n localStorage.setItem(\"at\", AccessToken);\r\n reqHandler.onTokenFetched(AccessToken);\r\n }\r\n\r\n // Return the promise, which will fulfill when we have a new token,\r\n // instead of the error.\r\n return awaitingNewToken;\r\n } catch (error) {\r\n // Something went generically wrong, return this error.\r\n return Promise.reject(error);\r\n }\r\n};\r\n\r\nexport default instance;\r\n","import React from \"react\";\r\nimport { getFractionOdds } from \"../../helpers\";\r\n\r\ntype Props = {\r\n odds: any;\r\n};\r\n\r\nconst RenderOdds: React.FC = ({ odds }) => {\r\n if (odds === \"0\" || odds === 0) {\r\n return odds;\r\n }\r\n if (!odds) {\r\n return \"\";\r\n }\r\n if (getFractionOdds(odds.toString()).fraction === \"\") {\r\n return parseFloat(odds) > 0 ? \"+\" + odds : odds;\r\n }\r\n const fracOdds = getFractionOdds(odds.toString());\r\n return (\r\n <>\r\n {fracOdds.integer === \"0\" || fracOdds.integer === \"-0\"\r\n ? fracOdds.sign\r\n : fracOdds.integer[0] !== \"-\"\r\n ? fracOdds.sign + fracOdds.integer\r\n : fracOdds.integer}\r\n \r\n \r\n );\r\n};\r\n\r\nconst renderOddsForChart = (odds: any) => {\r\n if (odds === \"0\" || odds === 0) {\r\n return odds;\r\n }\r\n if (!odds) {\r\n return \"\";\r\n }\r\n if (getFractionOdds(odds.toString()).fraction === \"\") {\r\n return parseFloat(odds) > 0 ? \"+\" + odds : odds;\r\n }\r\n const fracOdds = getFractionOdds(odds.toString());\r\n return (\r\n (fracOdds.integer === \"0\" || fracOdds.integer === \"-0\"\r\n ? fracOdds.sign\r\n : fracOdds.integer[0] !== \"-\"\r\n ? fracOdds.sign + fracOdds.integer\r\n : fracOdds.integer) + getFractionOdds(odds.toString()).fraction\r\n );\r\n};\r\n\r\nexport { RenderOdds, renderOddsForChart };\r\n","import React from \"react\";\r\nimport { Search } from \"react-feather\";\r\n\r\nconst NoResults = () => {\r\n return (\r\n
\r\n {/* \"search */}\r\n \r\n

NO RESULTS

\r\n
\r\n );\r\n};\r\n\r\nexport { NoResults };\r\n","import React from \"react\";\r\nimport { AlertCircle } from \"react-feather\";\r\n\r\nconst ErrorResults = () => {\r\n return (\r\n \r\n \r\n

ERROR OBTAINING RESULTS

\r\n \r\n );\r\n};\r\n\r\nexport { ErrorResults };\r\n","import React from \"react\";\r\nimport { Pulse } from \"better-react-spinkit\";\r\n\r\ntype SpinnerProps = {\r\n size: number;\r\n skin: string;\r\n};\r\n\r\nconst Spinner: React.FC = ({ size, skin }) => {\r\n let color;\r\n switch (skin) {\r\n case \"Default\":\r\n color = \"#0178c6\";\r\n break;\r\n case \"MMAOddsBreaker\":\r\n color = \"#e3181b\";\r\n break;\r\n default:\r\n color = \"#2d383e\";\r\n }\r\n return ;\r\n};\r\n\r\nexport { Spinner };\r\n","import { Sportsbook } from \"../App\";\r\n\r\nconst getSortReturn = (a: any, b: any, sportsbooks: Sportsbook[]): number => {\r\n let aOrderNum: number;\r\n let bOrderNum: number;\r\n let res: number = 0;\r\n sportsbooks.forEach((sb, i) => {\r\n if (a.SportsbooksID === sb.Id) {\r\n aOrderNum = i;\r\n }\r\n\r\n if (b.SportsbooksID === sb.Id) {\r\n bOrderNum = i;\r\n }\r\n\r\n if (aOrderNum < bOrderNum) {\r\n res = -1;\r\n } else if (bOrderNum < aOrderNum) {\r\n res = 1;\r\n }\r\n });\r\n\r\n return res;\r\n};\r\n\r\nexport { getSortReturn };\r\n","import React from \"react\";\r\n\r\nexport type CellOptions = {\r\n boldText?: boolean;\r\n greyText?: boolean;\r\n noPaddingLeft?: boolean;\r\n buttonCell?: boolean;\r\n placeholder?: boolean;\r\n overflowVisible?: boolean;\r\n additionalClassNames?: string;\r\n};\r\n\r\nexport type CellProps = {\r\n text?: string;\r\n title?: string;\r\n options?: CellOptions;\r\n style?: React.CSSProperties;\r\n href?: string | null;\r\n onClick?(): void;\r\n};\r\n\r\nconst Cell: React.FC = ({\r\n children,\r\n text,\r\n title=\"\",\r\n options,\r\n style,\r\n href,\r\n onClick\r\n}) => {\r\n const getCellClassName = () => {\r\n let className = \"Cell\";\r\n if (options) {\r\n const {\r\n boldText,\r\n greyText,\r\n noPaddingLeft,\r\n buttonCell,\r\n placeholder,\r\n overflowVisible,\r\n additionalClassNames\r\n } = options;\r\n if (boldText) {\r\n className += \" BoldText\";\r\n }\r\n if (greyText) {\r\n className += \" GreyText\";\r\n }\r\n if (noPaddingLeft) {\r\n className += \" NoPaddingLeft\";\r\n }\r\n if (buttonCell) {\r\n className += \" ButtonCell\";\r\n }\r\n if (placeholder) {\r\n className += \" Placeholder\";\r\n }\r\n if (overflowVisible) {\r\n className += \" OverflowVisible\";\r\n }\r\n if (additionalClassNames) {\r\n className += \" \" + additionalClassNames;\r\n }\r\n }\r\n return className;\r\n };\r\n\r\n const cellTitle = text ? text: title;\r\n\r\n return href ? (\r\n window.open(href, \"_blank\")}\r\n >\r\n {text && {text}}\r\n {children}\r\n \r\n ) : (\r\n \r\n {text && {text}}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport { Cell };\r\n","import React from \"react\";\r\nimport \"../styles/table.css\";\r\nimport Select from \"react-select\";\r\nimport axios from \"../../../Api\";\r\nimport { getSportsbookImageByName, getFractionOdds } from \"../../../helpers\";\r\nimport { Action, State, Sportsbook, GroupedEvent } from \"../../../App\";\r\nimport { RenderOdds } from \"../../helpers/oddsRenderer\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { format } from \"date-fns\";\r\nimport { getSortReturn } from \"../../../helpers/getSortReturn\";\r\nimport { Cell } from \"../../oddsTable/components/Cell\";\r\nimport { Event } from \"../../../App\";\r\nimport \"../../oddsTable/styles/oddsTable.scss\";\r\nimport { useDetectOverflow } from \"../../../helpers/useDetectOverflow\";\r\n\r\ntype Group = {\r\n GroupsID: number;\r\n GroupName: string;\r\n};\r\n\r\ntype Props = {\r\n state: State;\r\n dispatch: React.Dispatch;\r\n};\r\n\r\nconst oddsApiUrl = \"/statsrole/oddsmodule/odds\"; // add on \"categoriesID=1306\" for query params\r\n\r\nconst Table: React.FC = (props: Props) => {\r\n const [collapsedRows, setCollapsedRows] = React.useState([]);\r\n const [overflow] = useDetectOverflow(\"OddsMiddleTable\", [props.state.loading]);\r\n const [errorResults, setErrorResults] = React.useState(false);\r\n\r\n const { eventList } = props.state;\r\n\r\n const showBetNowButton = props.state.betNowLink ? true : false;\r\n const { groupedEvents } = props.state;\r\n\r\n React.useEffect(() => {\r\n if (groupedEvents && groupedEvents.length > 0) {\r\n const allButFirstGroupIds = groupedEvents\r\n .filter((_, i) => i !== 0)\r\n .map((g) => g.groupId.toString());\r\n setCollapsedRows(allButFirstGroupIds);\r\n }\r\n }, [groupedEvents]);\r\n\r\n React.useEffect(() => {\r\n if (!props.state.selectedCategory || props.state.loadingInitialState) {\r\n return;\r\n }\r\n axios\r\n .post(\r\n oddsApiUrl,\r\n {},\r\n {\r\n params: { categoriesID: props.state.selectedCategory },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n if (res && res.data && res.data.status === \"1\") {\r\n let tEventList: any = res.data.details.ListEvents;\r\n const listGroups: Group[] = res.data.details.ListGroups;\r\n if (listGroups) {\r\n props.dispatch({\r\n type: \"SET_GROUPED_EVENT_LIST\",\r\n groupedEventList: groupEvents(tEventList, listGroups),\r\n });\r\n }\r\n else {\r\n props.dispatch({\r\n type: \"SET_GROUPED_EVENT_LIST\",\r\n groupedEventList: [],\r\n });\r\n }\r\n const tLinesTypes: string[] = props.state.lineTypes.map((t: any) => t.value);\r\n // const tLinesTypes: string[] = [\"Money\"];\r\n const tSportsBooks: string[] = props.state.sportsbooks.map((s: Sportsbook) => s.Name);\r\n tEventList =\r\n tEventList &&\r\n tEventList.map((event: any) => ({\r\n ...event,\r\n ListParticipants: event.ListParticipants.map((p: any) => ({\r\n ...p,\r\n ListLines: p.ListLines.sort((a: any, b: any) =>\r\n getSortReturn(a, b, props.state.sportsbooks)\r\n ).filter(\r\n (l: any) =>\r\n tLinesTypes.includes(l.LinesType) && tSportsBooks.includes(l.Sportsbook)\r\n ),\r\n })),\r\n }));\r\n props.dispatch({ type: \"SET_EVENT_LIST\", eventList: tEventList });\r\n props.dispatch({ type: \"SET_LOADING_STATE\", isLoading: false });\r\n } else {\r\n props.dispatch({ type: \"SET_LOADING_STATE\", isLoading: false });\r\n setErrorResults(true);\r\n }\r\n } else {\r\n //\r\n }\r\n })\r\n .catch((err: any) => {\r\n props.dispatch({ type: \"SET_LOADING_STATE\", isLoading: false });\r\n console.log(err);\r\n });\r\n }, [props.state.selectedCategory, props.state.loadingInitialState]);\r\n\r\n const buildHeaders = () => {\r\n let headers: any = [];\r\n headers = props.state.sportsbooks.map((book: Sportsbook, key: number) => (\r\n \r\n {book.Name}\r\n \r\n ));\r\n return headers;\r\n };\r\n const handleToggleRowCollapse = (id: string) => {\r\n if (collapsedRows.find((r) => r === id)) {\r\n setCollapsedRows((r) => r.filter((r) => r !== id));\r\n } else {\r\n setCollapsedRows((r) => [...r, id]);\r\n }\r\n };\r\n\r\n const buildEventsColumn = () => {\r\n if (!props.state.loading) {\r\n if (props.state.groupedEvents && props.state.groupedEvents.length > 0) {\r\n const { groupedEvents } = props.state;\r\n return groupedEvents.map((group, i) => {\r\n if (group.eventList.length <= 0) {\r\n return null;\r\n }\r\n return (\r\n r === group.groupId.toString())\r\n ? \"Group Collapsed\"\r\n : \"Group\"\r\n }\r\n key={`${group.groupId}\"-\"${i}`}\r\n >\r\n
\r\n handleToggleRowCollapse(group.groupId.toString())}\r\n />\r\n
\r\n
\r\n {group.eventList.map((event) => (\r\n \r\n
\r\n \r\n
\r\n {event.ListParticipants.map((p: any, k: number) => {\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 return (\r\n eventList &&\r\n eventList.map((event: Event) => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {event.ListParticipants.map((p: any, k: number) => {\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 const buildTableData = (linesType: string) => {\r\n if (props.state.groupedEvents && props.state.groupedEvents.length > 0) {\r\n const { groupedEvents } = props.state;\r\n return groupedEvents.map((group) => {\r\n if (group.eventList.length <= 0) {\r\n return null;\r\n }\r\n return (\r\n r === group.groupId.toString())\r\n ? \"Group Collapsed\"\r\n : \"Group\"\r\n }\r\n key={\"TableData__\" + group.groupId}\r\n >\r\n
\r\n {props.state.sportsbooks.map((sb, i) => (\r\n handleToggleRowCollapse(group.groupId.toString())}\r\n />\r\n ))}\r\n
\r\n
\r\n {group.eventList.map((event) => (\r\n \r\n
\r\n {props.state.sportsbooks.map((sb, i) => (\r\n \r\n ))}\r\n
\r\n {event.ListParticipants.map((p: any, k: number) => {\r\n return (\r\n
\r\n {p.ListLines.filter(\r\n (l: any) => l.LinesType.toLowerCase() === linesType.toLowerCase()\r\n ).map((line: any, j: number) => {\r\n const sportsbook = props.state.sportsbooks[j];\r\n if (linesType.toLowerCase() === \"spread\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Value || line.Value === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n
\r\n
\r\n );\r\n } else if (linesType.toLowerCase() === \"total\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Value || line.Value === 0\r\n ? line.LinesOUType === \"Over\"\r\n ? \"o\" + getFractionOdds(line.Value.toString()).integer\r\n : \"u\" + getFractionOdds(line.Value.toString()).integer\r\n : \"-\"}\r\n {line.Value && (\r\n \r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n
\r\n
\r\n );\r\n } else if (linesType.toLowerCase() === \"money\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\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 if (!props.state.loading && eventList) {\r\n return eventList.map((event: any) => {\r\n return (\r\n \r\n
\r\n {props.state.sportsbooks.map((sb, i) => (\r\n \r\n ))}\r\n
\r\n {event.ListParticipants.map((p: any, k: number) => {\r\n return (\r\n
\r\n {p.ListLines.filter(\r\n (l: any) => l.LinesType.toLowerCase() === linesType.toLowerCase()\r\n ).map((line: any, j: number) => {\r\n const sportsbook = props.state.sportsbooks[j];\r\n if (linesType.toLowerCase() === \"spread\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Value || line.Value === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n
\r\n
\r\n );\r\n } else if (linesType.toLowerCase() === \"total\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Value || line.Value === 0\r\n ? line.LinesOUType === \"Over\"\r\n ? \"o\" + getFractionOdds(line.Value.toString()).integer\r\n : \"u\" + getFractionOdds(line.Value.toString()).integer\r\n : \"-\"}\r\n {line.Value && (\r\n \r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n
\r\n
\r\n );\r\n } else if (linesType.toLowerCase() === \"money\") {\r\n return (\r\n -1 ? line.Id : j + \"alt\"}>\r\n
\r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\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 const buildButtonsColumn = () => {\r\n if (props.state.groupedEvents && props.state.groupedEvents.length > 0) {\r\n const { groupedEvents } = props.state;\r\n return groupedEvents.map((group) => {\r\n if (group.eventList.length <= 0) {\r\n return null;\r\n }\r\n return (\r\n r === group.groupId.toString())\r\n ? \"Group Collapsed\"\r\n : \"Group\"\r\n }\r\n key={\"ButtonsCol__\" + group.groupId}\r\n >\r\n
\r\n \r\n {showBetNowButton && }\r\n
\r\n
\r\n {group.eventList.map((event: any, key: number) => {\r\n return (\r\n \r\n
\r\n \r\n {showBetNowButton && }\r\n
\r\n
\r\n \r\n {\r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n event: event.Id,\r\n page: \"Matchup\",\r\n });\r\n }}\r\n >\r\n Matchup\r\n \r\n \r\n {showBetNowButton && (\r\n \r\n window.open(props.state.betNowLink, \"_blank\")}\r\n >\r\n BET NOW\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n {\r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n event: event.Id,\r\n page: \"History\",\r\n });\r\n }}\r\n >\r\n History\r\n \r\n \r\n {showBetNowButton && (\r\n \r\n )}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n });\r\n }\r\n if (!props.state.loading) {\r\n return (\r\n eventList &&\r\n eventList.map((event: any, key: number) => {\r\n return (\r\n \r\n
\r\n \r\n {showBetNowButton && }\r\n
\r\n
\r\n \r\n {\r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n event: event.Id,\r\n page: \"Matchup\",\r\n });\r\n }}\r\n >\r\n Matchup\r\n \r\n \r\n {showBetNowButton && (\r\n \r\n window.open(props.state.betNowLink, \"_blank\")}\r\n >\r\n BET NOW\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n {\r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n event: event.Id,\r\n page: \"History\",\r\n });\r\n }}\r\n >\r\n History\r\n \r\n \r\n {showBetNowButton && (\r\n \r\n )}\r\n
\r\n
\r\n );\r\n })\r\n );\r\n }\r\n };\r\n\r\n const handleLinesTypeChange = (e: any) => {\r\n if (e) {\r\n props.dispatch({ type: \"SET_SELECTED_LINESTYPE\", lineType: e.value });\r\n }\r\n };\r\n\r\n if (props.state.loading) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (!props.state.loading && (!props.state.eventList || props.state.eventList.length <= 0)) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (errorResults || props.state.appError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {props.state.eventList && props.state.eventList.length > 0 && (\r\n
\r\n
\r\n \r\n {props.state.lineTypes.length > 0 && props.state.lineTypes.length > 1 ? (\r\n handleLinesTypeChange(selection)}\r\n isSearchable={false}\r\n value={\r\n props.state.selectedLinesType && props.state.lineTypes\r\n ? props.state.lineTypes.find(\r\n (l: any) => l.label === props.state.selectedLinesType\r\n )\r\n : props.state.lineTypes[0]\r\n }\r\n classNamePrefix=\"Select\"\r\n options={props.state.lineTypes}\r\n />\r\n ) : (\r\n
{props.state.selectedLinesType}
\r\n )}\r\n
\r\n
\r\n
{buildEventsColumn()}
\r\n
\r\n )}\r\n {props.state.eventList && props.state.eventList.length > 0 && (\r\n \r\n
{buildHeaders()}
\r\n
\r\n {buildTableData(props.state.selectedLinesType)}\r\n
\r\n
\r\n )}\r\n\r\n {props.state.eventList && props.state.eventList.length > 0 && (\r\n
\r\n
\r\n
{buildHeaders()}
\r\n
\r\n {buildTableData(props.state.selectedLinesType)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{buildButtonsColumn()}
\r\n
\r\n
\r\n )}\r\n\r\n {props.state.eventList && props.state.eventList.length > 0 && (\r\n
\r\n
\r\n \r\n
\r\n
{buildButtonsColumn()}
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport { Table };\r\n\r\n// helpers\r\nconst groupEvents = (eventList: Event[], groupList: Group[]): GroupedEvent[] => {\r\n const groupedEventsList: GroupedEvent[] = groupList.map((group) => {\r\n const groupEvents = eventList.filter((event) => event.GroupsID === group.GroupsID);\r\n return {\r\n groupId: group.GroupsID,\r\n groupName: group.GroupName,\r\n eventList: groupEvents,\r\n } as GroupedEvent;\r\n });\r\n const groupOther: GroupedEvent = {\r\n groupId: \"Other\",\r\n groupName: \"Other\",\r\n eventList: eventList.filter((event) => event.GroupsID == null),\r\n };\r\n return groupedEventsList.length > 0 ? [...groupedEventsList, groupOther] : [];\r\n};\r\n","import React from \"react\";\r\n\r\nexport const useDetectOverflow = (\r\n id: string,\r\n dependencies: any[] = []\r\n): [boolean, (b: boolean) => void] => {\r\n const [overflow, setOverflow] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const handleResize = () => {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n if (element.scrollWidth > element.offsetWidth) {\r\n setOverflow(true);\r\n } else if (element.offsetWidth === 0) {\r\n setOverflow(true);\r\n } else {\r\n setOverflow(false);\r\n }\r\n }\r\n };\r\n handleResize();\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, [id, ...dependencies]);\r\n\r\n return [\r\n React.useMemo(() => overflow, [overflow]),\r\n React.useCallback(setOverflow, [setOverflow])\r\n ];\r\n};\r\n","import React from \"react\";\r\nimport { Header } from \"./header\";\r\nimport { Table } from \"./table\";\r\nimport { State, Action } from \"../../../App\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\n// import { OddsTable } from \"../../oddsTable\";\r\n\r\ntype Props = {\r\n state: State;\r\n dispatch: React.Dispatch;\r\n};\r\n\r\nconst OddsPage = (props: Props) => {\r\n const { state, dispatch } = props;\r\n const { loadingInitialState } = state;\r\n\r\n React.useEffect(() => {\r\n if (loadingInitialState) {\r\n document.body.setAttribute(\"style\", \"background-color: transparent\");\r\n } else {\r\n document.body.removeAttribute(\"style\");\r\n }\r\n }, [loadingInitialState]);\r\n\r\n if (state.loadingInitialState) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {/* */}\r\n \r\n );\r\n};\r\n\r\nexport { OddsPage };\r\n","import React from \"react\";\r\nimport Swiper, { SwiperInstance } from \"react-id-swiper\";\r\nimport \"../../../../node_modules/swiper/dist/css/swiper.css\";\r\nimport { Action, State } from \"../../../App\";\r\nimport { format } from \"date-fns\";\r\nimport \"../styles/header.css\";\r\nimport { HistoryHeaderDetails } from \"./history\";\r\nimport { getSportsbookImageById } from \"../../../helpers\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n activeSb: string;\r\n setActiveSb(sb: string): void;\r\n headerDetails: HistoryHeaderDetails | null;\r\n loading: boolean;\r\n errorResults: boolean;\r\n};\r\n\r\nconst Header = (props: Props) => {\r\n const [swiper, updateSwiper] = React.useState(null);\r\n\r\n const handleBackClick = () => {\r\n props.dispatch({ type: \"SET_LOADING_STATE\", isLoading: true });\r\n props.dispatch({ type: \"SWITCH_PAGE\", page: \"Odds\" });\r\n };\r\n\r\n const goNext = () => {\r\n if (swiper !== null) {\r\n swiper.slideNext();\r\n }\r\n };\r\n\r\n const goPrev = () => {\r\n if (swiper !== null) {\r\n swiper.slidePrev();\r\n }\r\n };\r\n\r\n const params = {\r\n slidesPerView: 8,\r\n watchOverflow: true,\r\n breakpoints: {\r\n 1024: {\r\n slidesPerView: 6,\r\n },\r\n 768: {\r\n slidesPerView: 3,\r\n },\r\n 425: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n navigation: {\r\n nextEl: \".swiper-button-next.custom-swiper-button-next\",\r\n prevEl: \".swiper-button-prev.custom-swiper-button-prev\",\r\n },\r\n };\r\n\r\n if (props.loading) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (props.errorResults) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {props.headerDetails ? props.headerDetails.awayName : \"N/A\"}\r\n \r\n
\r\n \r\n {props.headerDetails ? props.headerDetails.homeName : \"N/A\"}\r\n \r\n
\r\n
\r\n {props.headerDetails && format(new Date(props.headerDetails.date), \"M/d/yyyy h:mma\")}\r\n
\r\n
\r\n props.dispatch({ type: \"SWITCH_PAGE\", page: \"Matchup\" })}\r\n >\r\n Matchup\r\n \r\n
\r\n
\r\n
\r\n {!props.loading && (\r\n <>\r\n {/*
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { Header };\r\n","import React from \"react\";\r\nimport { State, Action, SelectOption } from \"../../../App\";\r\nimport {\r\n XAxis,\r\n YAxis,\r\n Tooltip,\r\n ReferenceLine,\r\n AreaChart,\r\n Area,\r\n Legend,\r\n ResponsiveContainer\r\n} from \"recharts\";\r\nimport { format } from \"date-fns\";\r\nimport \"../styles/body.css\";\r\nimport { HistoryHeaderDetails, SportsbooksHistory } from \"./history\";\r\nimport { RenderOdds, renderOddsForChart } from \"../../helpers/oddsRenderer\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport Select from \"react-select\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n sportsbooks: SportsbooksHistory[];\r\n activeSb: string;\r\n loading: boolean;\r\n headerDetails: HistoryHeaderDetails | null;\r\n errorResults: boolean;\r\n spreadTimeFilter: SelectOption;\r\n moneyTimeFilter: SelectOption;\r\n totalTimeFilter: SelectOption;\r\n handleSpreadTimeFrameChange(timeFrame: string): void;\r\n handleMoneyTimeFrameChange(timeFrame: string): void;\r\n handleTotalTimeFrameChange(timeFrame: string): void;\r\n spreadDataLoading: boolean;\r\n moneyDataLoading: boolean;\r\n totalDataLoading: boolean;\r\n};\r\n\r\nexport type ChartData = {\r\n name: string;\r\n team01: number;\r\n team02: number;\r\n};\r\n\r\nconst timeOptions = [\r\n { value: \"recent\", label: \"Recent\" },\r\n { value: \"lasthour\", label: \"Last Hour\" },\r\n { value: \"lastday\", label: \"Last Day\" },\r\n { value: \"lastweek\", label: \"Last Week\" },\r\n { value: \"lastmonth\", label: \"Last Month\" }\r\n];\r\n\r\nconst ToolTipView = ({ team1, team2 }: any) => {\r\n if (!team1 && !team2) return ;\r\n return (\r\n
\r\n {team1 ? (\r\n
\r\n {format(new Date(team1.payload.name), \"dd/MM hh:mma\")}\r\n
\r\n ) : team2 ? (\r\n
\r\n {format(new Date(team2.payload.name), \"dd/MM hh:mma\")}\r\n
\r\n ) : null}\r\n {team1 && team1.payload.team01Label.value && (\r\n
\r\n {team1.name}:{\" \"}\r\n \r\n {team1.payload.team01Label.price}\r\n
\r\n )}\r\n {team2 && team2.payload.team02Label.value && (\r\n
\r\n {team2.name}:{\" \"}\r\n \r\n {team2.payload.team02Label.price}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst renderCustomDot = (\r\n params: any,\r\n team: \"team1\" | \"team2\",\r\n skin: string\r\n) => {\r\n let circleRadius = params.r;\r\n if (team === \"team1\") {\r\n if (\r\n !params.payload.team01Label.value &&\r\n params.payload.team01Label.value !== 0\r\n )\r\n return;\r\n if (params.payload.team01Label.radiusMultiplier === 1.7) {\r\n circleRadius = circleRadius * params.payload.team01Label.radiusMultiplier;\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else if (team === \"team2\") {\r\n if (\r\n !params.payload.team02Label.value &&\r\n params.payload.team01Label.value !== 0\r\n )\r\n return;\r\n circleRadius = circleRadius * params.payload.team02Label.radiusMultiplier;\r\n if (params.payload.team02Label.radiusMultiplier === 1.7) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else {\r\n throw new Error(`Invalid team: ${team}`);\r\n }\r\n};\r\n\r\nconst Body = (props: Props) => {\r\n const { sportsbooks, activeSb, state } = props;\r\n const selectedLines = sportsbooks.filter((s: any) => s.Name === activeSb)[0];\r\n\r\n const adjustChartData = (data: any[]) => {\r\n let adjustedData: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n if (i === 0) {\r\n adjustedData.push({\r\n ...data[i],\r\n radiusMultiplier: 1.7\r\n });\r\n } else if (data[i].value !== data[i - 1].value) {\r\n adjustedData.push({\r\n ...data[i],\r\n radiusMultiplier: 1.7\r\n });\r\n } else {\r\n adjustedData.push({\r\n ...data[i],\r\n radiusMultiplier: 1\r\n });\r\n }\r\n }\r\n return adjustedData;\r\n };\r\n\r\n const handleSpreadTimeFilterChange = (e: any) => {\r\n props.handleSpreadTimeFrameChange(e.value);\r\n };\r\n const handleMoneyTimeFilterChange = (e: any) => {\r\n props.handleMoneyTimeFrameChange(e.value);\r\n };\r\n const handleTotalTimeFilterChange = (e: any) => {\r\n props.handleTotalTimeFrameChange(e.value);\r\n };\r\n\r\n const spreadLines =\r\n selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.History &&\r\n selectedLines.Spread.History.length > 0;\r\n let spreadChartData: any;\r\n if (spreadLines) {\r\n const spreadHistory = selectedLines && [...selectedLines.Spread.History];\r\n spreadChartData =\r\n spreadHistory &&\r\n spreadHistory.reverse().map(h => ({\r\n name: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n team01: h.Price01 ? h.Price01 : null,\r\n team01Label: {\r\n time: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n price: h.Price01 ? h.Price01 : null,\r\n value: h.Value01 || h.Value01 === 0 ? h.Value01 : null\r\n },\r\n team02: h.Price02 ? h.Price02 : null,\r\n team02Label: {\r\n time: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n price: h.Price02 ? h.Price02 : null,\r\n value: h.Value02 || h.Value02 === 0 ? h.Value02 : null\r\n }\r\n }));\r\n const modifiedTeam01Labels = adjustChartData(\r\n spreadChartData.map((d: any) => d.team01Label)\r\n );\r\n const modifiedTeam02Labels = adjustChartData(\r\n spreadChartData.map((d: any) => d.team02Label)\r\n );\r\n for (let i = 0; i < spreadChartData.length; i++) {\r\n spreadChartData[i].team01Label = {\r\n ...modifiedTeam01Labels[i]\r\n };\r\n spreadChartData[i].team02Label = {\r\n ...modifiedTeam02Labels[i]\r\n };\r\n }\r\n } else {\r\n spreadChartData = [];\r\n }\r\n const moneyLines =\r\n selectedLines &&\r\n selectedLines.Money &&\r\n selectedLines.Money.History &&\r\n selectedLines.Money.History.length > 0;\r\n let moneyChartData: any;\r\n if (moneyLines) {\r\n const moneyHistory = selectedLines && [...selectedLines.Money.History];\r\n moneyChartData =\r\n moneyHistory &&\r\n moneyHistory.reverse().map(h => ({\r\n name: h.UpdateDate ? new Date(h.UpdateDate).getTime() : \"N/A\",\r\n team01: h.Price01 ? h.Price01 : null,\r\n team02: h.Price02 ? h.Price02 : null\r\n }));\r\n } else {\r\n moneyChartData = [];\r\n }\r\n const totalLines =\r\n selectedLines &&\r\n selectedLines.Total &&\r\n selectedLines.Total.History &&\r\n selectedLines.Total.History.length > 0;\r\n let totalChartData: any;\r\n if (totalLines) {\r\n let totalHistory = selectedLines && [...selectedLines.Total.History];\r\n totalChartData =\r\n totalHistory &&\r\n totalHistory.reverse().map(h => ({\r\n name: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n team01: h.Price01 ? h.Price01 : null,\r\n team01Label: {\r\n time: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n price: h.Price01 ? h.Price01 : null,\r\n value: h.Value01 || h.Value01 === 0 ? h.Value01 : null\r\n },\r\n team02: h.Price02 ? h.Price02 : null,\r\n team02Label: {\r\n time: h.UpdateDate ? new Date(h.UpdateDate).getTime() : 0,\r\n price: h.Price02 ? h.Price02 : null,\r\n value: h.Value02 || h.Value02 === 0 ? h.Value02 : null\r\n }\r\n }));\r\n const modifiedTeam01Labels = adjustChartData(\r\n totalChartData.map((d: any) => d.team01Label)\r\n );\r\n const modifiedTeam02Labels = adjustChartData(\r\n totalChartData.map((d: any) => d.team02Label)\r\n );\r\n for (let i = 0; i < totalChartData.length; i++) {\r\n totalChartData[i].team01Label = {\r\n ...modifiedTeam01Labels[i]\r\n };\r\n totalChartData[i].team02Label = {\r\n ...modifiedTeam02Labels[i]\r\n };\r\n }\r\n } else {\r\n totalChartData = [];\r\n }\r\n\r\n const linesAccess = (line: string) => {\r\n const found = state.lineTypes.find(\r\n l => l.label.toLowerCase() === line.toLowerCase()\r\n );\r\n if (found) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {/* Spread chart START */}\r\n {linesAccess(\"Spread\") && (\r\n
\r\n t.value === props.spreadTimeFilter.value)}\r\n defaultValue={timeOptions[0]}\r\n onChange={handleSpreadTimeFilterChange}\r\n />\r\n \r\n {props.loading || props.spreadDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !spreadChartData || spreadChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n \r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n content={(params: any) => {\r\n let team01;\r\n let team02;\r\n // if data is missing for one team then there will only be one object in payload array.\r\n // We must check which team data exists and adjust accordingly\r\n if (params.payload && params.payload.length === 1) {\r\n if (params.payload[0].payload.team01) {\r\n team01 = params.payload[0];\r\n } else if (params.payload[0].payload.team02) {\r\n team02 = params.payload[0];\r\n }\r\n } else {\r\n team01 = params.payload[0];\r\n team02 = params.payload[1];\r\n }\r\n return ;\r\n }}\r\n />\r\n \r\n \r\n renderCustomDot(params, \"team1\", state.skin)\r\n }\r\n />\r\n \r\n renderCustomDot(params, \"team2\", state.skin)\r\n }\r\n />\r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Spread chart END */}\r\n\r\n {/* Money chart START */}\r\n {linesAccess(\"Money\") && (\r\n
\r\n t.value === props.moneyTimeFilter.value)}\r\n defaultValue={timeOptions[0]}\r\n onChange={handleMoneyTimeFilterChange}\r\n />\r\n \r\n {props.loading || props.moneyDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !moneyChartData || moneyChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n \r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Money chart END */}\r\n\r\n {/* Total chart START */}\r\n {linesAccess(\"Total\") && (\r\n
\r\n \r\n \r\n {props.loading || props.totalDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !totalChartData || totalChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n {\r\n let team01;\r\n let team02;\r\n // if data is missing for one team then there will only be one object in payload array.\r\n // We must check which team data exists and adjust accordingly\r\n if (params.payload && params.payload.length === 1) {\r\n if (params.payload[0].payload.team01) {\r\n team01 = params.payload[0];\r\n } else if (params.payload[0].payload.team02) {\r\n team02 = params.payload[0];\r\n }\r\n } else {\r\n team01 = params.payload[0];\r\n team02 = params.payload[1];\r\n }\r\n return ;\r\n }}\r\n labelFormatter={data =>\r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n />\r\n \r\n \r\n renderCustomDot(params, \"team1\", state.skin)\r\n }\r\n />\r\n \r\n renderCustomDot(params, \"team2\", state.skin)\r\n }\r\n />\r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Total chart END */}\r\n
\r\n
\r\n {/* Spread Data Table START */}\r\n {linesAccess(\"Spread\") && (\r\n
\r\n
\r\n
Spread
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.Abbreviation01}\r\n
\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.Abbreviation02}\r\n
\r\n
\r\n )}\r\n
\r\n {props.loading || props.spreadDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Spread &&\r\n (!selectedLines.Spread.History ||\r\n selectedLines.Spread.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.History &&\r\n selectedLines.Spread.History.map((h, k: number) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n \r\n {h.Value01 || h.Value01 === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n \r\n {h.Value02 || h.Value02 === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Spread Data Table END */}\r\n\r\n {/* Money Data Table START */}\r\n {linesAccess(\"Money\") && (\r\n
\r\n
\r\n
Money
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
\r\n {props.headerDetails && props.headerDetails.awayAbbr}\r\n
\r\n
\r\n {props.headerDetails && props.headerDetails.homeAbbr}\r\n
\r\n
\r\n )}\r\n
\r\n {props.loading || props.moneyDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Money &&\r\n (!selectedLines.Money.History ||\r\n selectedLines.Money.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Money &&\r\n selectedLines.Money.History &&\r\n selectedLines.Money.History.map((h, k) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n {/* {h.Value01 ? : \"-\"} */}\r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n {/* {h.Value02 ? : \"-\"} */}\r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Money Data Table END */}\r\n\r\n {/* Total Data Table START */}\r\n {linesAccess(\"Total\") && (\r\n
\r\n
\r\n
Total
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
Over
\r\n
Under
\r\n
\r\n )}\r\n
\r\n {props.loading || props.totalDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Total &&\r\n (!selectedLines.Total.History ||\r\n selectedLines.Total.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Total &&\r\n selectedLines.Total.History &&\r\n selectedLines.Total.History.map((h, k) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n \r\n {h.Value01 ? : \"-\"}\r\n \r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n \r\n {h.Value02 ? : \"-\"}\r\n \r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Total Data Table END */}\r\n
\r\n\r\n {/* Mobile version - 100% width charts and tables - with tables below their respective charts */}\r\n
\r\n {/* Spread chart START */}\r\n {linesAccess(\"Spread\") && (\r\n
\r\n t.value === props.spreadTimeFilter.value)}\r\n defaultValue={timeOptions[0]}\r\n onChange={handleSpreadTimeFilterChange}\r\n />\r\n \r\n {props.loading || props.spreadDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !spreadChartData || spreadChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n {\r\n let team01;\r\n let team02;\r\n // if data is missing for one team then there will only be one object in payload array.\r\n // We must check which team data exists and adjust accordingly\r\n if (params.payload && params.payload.length === 1) {\r\n if (params.payload[0].payload.team01) {\r\n team01 = params.payload[0];\r\n } else if (params.payload[0].payload.team02) {\r\n team02 = params.payload[0];\r\n }\r\n } else {\r\n team01 = params.payload[0];\r\n team02 = params.payload[1];\r\n }\r\n return ;\r\n }}\r\n labelFormatter={data =>\r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n />\r\n \r\n \r\n renderCustomDot(params, \"team1\", state.skin)\r\n }\r\n />\r\n \r\n renderCustomDot(params, \"team2\", state.skin)\r\n }\r\n />\r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Spread chart END */}\r\n\r\n {/* Spread Data Table START */}\r\n {linesAccess(\"Spread\") && (\r\n
\r\n
\r\n
Spread
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.Abbreviation01}\r\n
\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.Abbreviation02}\r\n
\r\n
\r\n )}\r\n
\r\n {props.loading || props.spreadDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Spread &&\r\n (!selectedLines.Spread.History ||\r\n selectedLines.Spread.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Spread &&\r\n selectedLines.Spread.History &&\r\n selectedLines.Spread.History.map((h, k: number) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n \r\n {h.Value01 || h.Value01 === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n \r\n {h.Value02 || h.Value02 === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Spread Data Table END */}\r\n\r\n {/* Money chart START */}\r\n {linesAccess(\"Money\") && (\r\n
\r\n t.value === props.moneyTimeFilter.value)}\r\n defaultValue={timeOptions[0]}\r\n onChange={handleMoneyTimeFilterChange}\r\n />\r\n \r\n {props.loading || props.moneyDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !moneyChartData || moneyChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n \r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Money chart END */}\r\n\r\n {/* Money Data Table START */}\r\n {linesAccess(\"Money\") && (\r\n
\r\n
\r\n
Money
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
\r\n {props.headerDetails && props.headerDetails.awayAbbr}\r\n
\r\n
\r\n {props.headerDetails && props.headerDetails.homeAbbr}\r\n
\r\n
\r\n )}\r\n
\r\n {props.loading || props.moneyDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Money &&\r\n (!selectedLines.Money.History ||\r\n selectedLines.Money.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Money &&\r\n selectedLines.Money.History &&\r\n selectedLines.Money.History.map((h, k) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n {/* {h.Value01 ? : \"-\"} */}\r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n {/* {h.Value02 ? : \"-\"} */}\r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Money Data Table END */}\r\n\r\n {/* Total chart START */}\r\n {linesAccess(\"Total\") && (\r\n
\r\n t.value === props.totalTimeFilter.value)}\r\n defaultValue={timeOptions[0]}\r\n onChange={handleTotalTimeFilterChange}\r\n />\r\n \r\n {props.loading || props.totalDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : !totalChartData || totalChartData.length <= 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n format(new Date(unixTime), \"dd/MM hh:mma\")\r\n }\r\n domain={[\"dataMin\", \"dataMax\"]}\r\n type=\"number\"\r\n />\r\n \r\n {\r\n let team01;\r\n let team02;\r\n // if data is missing for one team then there will only be one object in payload array.\r\n // We must check which team data exists and adjust accordingly\r\n if (params.payload && params.payload.length === 1) {\r\n if (params.payload[0].payload.team01) {\r\n team01 = params.payload[0];\r\n } else if (params.payload[0].payload.team02) {\r\n team02 = params.payload[0];\r\n }\r\n } else {\r\n team01 = params.payload[0];\r\n team02 = params.payload[1];\r\n }\r\n return ;\r\n }}\r\n labelFormatter={data =>\r\n format(new Date(data), \"dd/MM hh:mm\")\r\n }\r\n />\r\n \r\n \r\n renderCustomDot(params, \"team1\", state.skin)\r\n }\r\n // label={{ position: \"top\" }}\r\n />\r\n \r\n renderCustomDot(params, \"team2\", state.skin)\r\n }\r\n // label={{ position: \"top\" }}\r\n />\r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n {/* Total chart END */}\r\n\r\n {/* Total Data Table START */}\r\n {linesAccess(\"Total\") && (\r\n
\r\n
\r\n
Total
\r\n {!props.loading && (\r\n
\r\n
Times
\r\n
Over
\r\n
Under
\r\n
\r\n )}\r\n
\r\n {props.loading || props.totalDataLoading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : selectedLines &&\r\n selectedLines.Total &&\r\n (!selectedLines.Total.History ||\r\n selectedLines.Total.History.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {selectedLines &&\r\n selectedLines.Total &&\r\n selectedLines.Total.History &&\r\n selectedLines.Total.History.map((h, k) => (\r\n
\r\n
\r\n {h.UpdateDate\r\n ? format(new Date(h.UpdateDate), \"dd/MM hh:mma\")\r\n : \"-\"}\r\n
\r\n
\r\n \r\n {h.Value01 ? : \"-\"}\r\n \r\n \r\n {h.Price01\r\n ? h.Price01 > 0\r\n ? \"+\" + h.Price01\r\n : h.Price01\r\n : \"-\"}\r\n \r\n
\r\n
\r\n \r\n {h.Value02 ? : \"-\"}\r\n \r\n \r\n {h.Price02\r\n ? h.Price02 > 0\r\n ? \"+\" + h.Price02\r\n : h.Price02\r\n : \"-\"}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Total Data Table END */}\r\n
\r\n\r\n {/* TODO: Only render when linetype length is 1 -> Meaning only 1 line type access. To render graph and table side by side */}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport { Body };\r\n","import React from \"react\";\r\nimport { Header } from \"./header\";\r\nimport { Body } from \"./body\";\r\nimport { Action, State, SelectOption } from \"../../../App\";\r\nimport { zip, groupBy } from \"lodash\";\r\nimport axios from \"../../../Api\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n};\r\n\r\nexport type HistoryHeaderDetails = {\r\n awayName: string;\r\n awayAbbr: string;\r\n homeName: string;\r\n homeAbbr: string;\r\n date: string;\r\n};\r\n\r\nexport type TeamAbbreviations = {\r\n away: string;\r\n home: string;\r\n};\r\n\r\nexport type HistoryData = {\r\n Price01: number;\r\n Price02: number;\r\n UpdateDate: string;\r\n Value01: number | null;\r\n Value02: number | null;\r\n};\r\n\r\nexport type LinesHistory = {\r\n Name01: string;\r\n Abbreviation01: string;\r\n Name02: string;\r\n Abbreviation02: string;\r\n History: HistoryData[];\r\n};\r\n\r\nexport type SportsbooksHistory = {\r\n Id: number;\r\n Name: string;\r\n Spread: LinesHistory;\r\n Money: LinesHistory;\r\n Total: LinesHistory;\r\n};\r\n\r\nconst timeOptions = [\r\n { value: \"recent\", label: \"Recent\" },\r\n { value: \"lasthour\", label: \"Last Hour\" },\r\n { value: \"lastday\", label: \"Last Day\" },\r\n { value: \"lastweek\", label: \"Last Week\" },\r\n { value: \"lastmonth\", label: \"Last Month\" }\r\n];\r\n\r\nconst HistoryPage = (props: Props) => {\r\n const [activeSb, setActiveSb] = React.useState(\"5Dimes\");\r\n const [sportsbooks, setSportsbooks] = React.useState([]);\r\n const [headerDetails, setHeaderDetails] = React.useState(null);\r\n const [loading, setLoading] = React.useState(true);\r\n const [errorResults, setErrorResults] = React.useState(false);\r\n const [spreadDataLoading, setSpreadDataLoading] = React.useState(false);\r\n const [moneyDataLoading, setMoneyDataLoading] = React.useState(false);\r\n const [totalDataLoading, setTotalDataLoading] = React.useState(false);\r\n const [spreadTimeFilter, setSpreadTimeFilter] = React.useState>({\r\n value: \"recent\",\r\n label: \"Recent\"\r\n });\r\n const [moneyTimeFilter, setMoneyTimeFilter] = React.useState({\r\n value: \"recent\",\r\n label: \"Recent\"\r\n });\r\n const [totalTimeFilter, setTotalTimeFilter] = React.useState({\r\n value: \"recent\",\r\n label: \"Recent\"\r\n });\r\n\r\n React.useEffect(() => {\r\n if (props.state.sportsbooks.length > 0) {\r\n setActiveSb(props.state.sportsbooks[0].Name);\r\n } else {\r\n setActiveSb(\"\");\r\n }\r\n window.scrollTo(0, 0);\r\n axios\r\n .post(\r\n \"/statsrole/historymodule/history\",\r\n {},\r\n {\r\n params: { eventsID: props.state.selectedEvent },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` }\r\n }\r\n )\r\n .then(res => {\r\n if (res.data.status !== \"1\") {\r\n setErrorResults(true);\r\n return;\r\n }\r\n if (res.data && res.data.details) {\r\n setSportsbooks(res.data.details.Sportsbooks);\r\n } else {\r\n // if details=null do what?\r\n setSportsbooks([]);\r\n }\r\n // console.log(\"res:\", res);\r\n res.data &&\r\n res.data.details &&\r\n setHeaderDetails({\r\n awayName: res.data.details.AwayName ? res.data.details.AwayName : \"N/A\",\r\n awayAbbr: res.data.details.AwayAbbreviation ? res.data.details.AwayAbbreviation : \"N/A\",\r\n homeName: res.data.details.HomeName ? res.data.details.HomeName : \"N/A\",\r\n homeAbbr: res.data.details.HomeAbbreviation ? res.data.details.HomeAbbreviation : \"N/A\",\r\n date: res.data.details.Date ? res.data.details.Date : \"N/A\"\r\n });\r\n // setTimeout(() => setLoading(false), 1000); //causing weird behaviour.\r\n setLoading(false);\r\n })\r\n .catch(err => {\r\n setLoading(false);\r\n setErrorResults(true);\r\n props.dispatch({ type: \"SET_APP_ERROR\" });\r\n console.log(err);\r\n });\r\n }, [props.state.selectedEvent]);\r\n\r\n const handleSpreadTimeFrameChange = (timeFrame: string) => {\r\n setSpreadDataLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/historymodule/history\",\r\n {},\r\n {\r\n params: {\r\n eventsID: props.state.selectedEvent,\r\n timeFrame: timeFrame,\r\n linesType: \"spread\"\r\n },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` }\r\n }\r\n )\r\n .then(res => {\r\n setTimeout(() => {\r\n setSpreadDataLoading(false);\r\n }, 500);\r\n if (res.data.status !== \"1\") {\r\n setErrorResults(true); // just set spreadfiltererrorresults?\r\n return;\r\n }\r\n if (res.data && res.data.details) {\r\n const copySportsbooks = [...sportsbooks];\r\n res.data.details.Sportsbooks.forEach((sb: SportsbooksHistory) => {\r\n const foundIndex = copySportsbooks.findIndex(\r\n (s: SportsbooksHistory) => s.Name === sb.Name\r\n );\r\n if (foundIndex !== -1) {\r\n copySportsbooks[foundIndex] = {\r\n ...copySportsbooks[foundIndex],\r\n Spread: sb.Spread\r\n };\r\n }\r\n });\r\n setSportsbooks(copySportsbooks);\r\n } else {\r\n setTimeout(() => {\r\n setSpreadDataLoading(false);\r\n }, 500);\r\n // if details is null?\r\n }\r\n });\r\n };\r\n\r\n const handleMoneyTimeFrameChange = (timeFrame: string) => {\r\n setMoneyDataLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/historymodule/history\",\r\n {},\r\n {\r\n params: { eventsID: props.state.selectedEvent, timeFrame: timeFrame, linesType: \"money\" },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` }\r\n }\r\n )\r\n .then(res => {\r\n setTimeout(() => {\r\n setMoneyDataLoading(false);\r\n }, 500);\r\n if (res.data.status !== \"1\") {\r\n setErrorResults(true); // just set moneyfiltererrorresults?\r\n return;\r\n }\r\n if (res.data && res.data.details) {\r\n const copySportsbooks = [...sportsbooks];\r\n res.data.details.Sportsbooks.map((sb: SportsbooksHistory) => {\r\n const foundIndex = copySportsbooks.findIndex(\r\n (s: SportsbooksHistory) => s.Name === sb.Name\r\n );\r\n if (foundIndex !== -1) {\r\n copySportsbooks[foundIndex] = {\r\n ...copySportsbooks[foundIndex],\r\n Money: sb.Money\r\n };\r\n }\r\n });\r\n setSportsbooks(copySportsbooks);\r\n } else {\r\n setTimeout(() => {\r\n setMoneyDataLoading(false);\r\n }, 500);\r\n // if details is null?\r\n }\r\n });\r\n };\r\n\r\n const handleTotalTimeFrameChange = (timeFrame: string) => {\r\n setTotalDataLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/historymodule/history\",\r\n {},\r\n {\r\n params: { eventsID: props.state.selectedEvent, timeFrame: timeFrame, linesType: \"total\" },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` }\r\n }\r\n )\r\n .then(res => {\r\n setTimeout(() => {\r\n setTotalDataLoading(false);\r\n }, 500);\r\n if (res.data.status !== \"1\") {\r\n setErrorResults(true); // just set totalfiltererrorresults?\r\n return;\r\n }\r\n if (res.data && res.data.details) {\r\n const copySportsbooks = [...sportsbooks];\r\n res.data.details.Sportsbooks.map((sb: SportsbooksHistory) => {\r\n const foundIndex = copySportsbooks.findIndex(\r\n (s: SportsbooksHistory) => s.Name === sb.Name\r\n );\r\n if (foundIndex !== -1) {\r\n copySportsbooks[foundIndex] = {\r\n ...copySportsbooks[foundIndex],\r\n Total: sb.Total\r\n };\r\n }\r\n });\r\n setSportsbooks(copySportsbooks);\r\n } else {\r\n setTimeout(() => {\r\n setTotalDataLoading(false);\r\n }, 500);\r\n // if details is null?\r\n }\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport { HistoryPage };\r\n","import React from \"react\";\r\n\r\nexport type ConditionalLinkProps = {\r\n link: string;\r\n};\r\n\r\nconst ConditionalLink: React.FC = ({\r\n children,\r\n link\r\n}) => {\r\n const hasLink = link ? true : false;\r\n return hasLink ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n <>{children}\r\n );\r\n};\r\n\r\nexport { ConditionalLink };\r\n","import React from \"react\";\r\nimport \"../styles/header.css\";\r\nimport { Action, State } from \"../../../App\";\r\nimport { format } from \"date-fns\";\r\nimport { MatchUp } from \"./matchup\";\r\nimport { getSportsbookImageById } from \"../../../helpers\";\r\nimport { RenderOdds } from \"../../helpers/oddsRenderer\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { ConditionalLink } from \"../../helpers/conditionalLink\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n matchup: MatchUp[] | null;\r\n date: string;\r\n loading: boolean;\r\n errorResults: boolean;\r\n};\r\n\r\nconst Header: React.FC = (props: Props) => {\r\n const onlyOneLine = props.state.lineTypes.length === 1;\r\n const handleBackClick = () => {\r\n props.dispatch({ type: \"SET_LOADING_STATE\", isLoading: true });\r\n props.dispatch({ type: \"SWITCH_PAGE\", page: \"Odds\" });\r\n };\r\n\r\n if (props.loading) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (props.errorResults) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{props.matchup && props.matchup[0].Name}
\r\n
\r\n
\r\n {/* split \"\" and join \"T\": Fix iOS / maxOS issue where the parsers are different hence date looks like it isnt ISO format */}\r\n {props.date && format(new Date(props.date.split(\" \").join(\"T\")), \"M/d/yyyy h:mma\")}\r\n
\r\n
\r\n {props.matchup &&\r\n props.matchup[0].PredictedScore !== null &&\r\n props.matchup &&\r\n props.matchup[1].PredictedScore !== null && Predicted Score}\r\n
\r\n
{props.matchup && props.matchup[1].Name}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {props.date && format(new Date(props.date.split(\" \").join(\"T\")), \"M/d/yyyy h:mma\")}\r\n
\r\n
{props.matchup && props.matchup[0].Name}
\r\n
\r\n
{props.matchup && props.matchup[1].Name}
\r\n {props.matchup &&\r\n props.matchup[0].PredictedScore !== null &&\r\n props.matchup &&\r\n props.matchup[1].PredictedScore !== null && Predicted Score}\r\n
\r\n
\r\n\r\n {props.matchup &&\r\n props.matchup[0].PredictedScore !== null &&\r\n props.matchup &&\r\n props.matchup[1].PredictedScore !== null && (\r\n
\r\n
\r\n
\r\n {props.matchup && props.matchup[0].PredictedScore !== null\r\n ? props.matchup[0].PredictedScore\r\n : \"-\"}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.matchup && props.matchup[1].PredictedScore !== null\r\n ? props.matchup[1].PredictedScore\r\n : \"-\"}\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {props.matchup &&\r\n props.matchup[0].PredictedScore !== null &&\r\n props.matchup &&\r\n props.matchup[1].PredictedScore !== null && (\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 {props.matchup && props.matchup[0].PredictedScore !== null\r\n ? props.matchup[0].PredictedScore\r\n : \"-\"}\r\n
\r\n
\r\n {props.matchup && props.matchup[1].PredictedScore !== null\r\n ? props.matchup[1].PredictedScore\r\n : \"-\"}\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {props.state.lineTypes.find((l) => l.label === \"Spread\") &&\r\n (() => {\r\n const sbId = props.matchup && props.matchup[0].BestSpreadSportsbooksID;\r\n const sb = props.state.sportsbooks.find((sb) => sb.Id === sbId);\r\n let link: string = \"\";\r\n if (sb && sb.Link) {\r\n link = sb.Link;\r\n }\r\n return (\r\n \r\n
\r\n \r\n Best Spread\r\n ({props.matchup && props.matchup[0].Name})\r\n \r\n {props.matchup && (\r\n \r\n )}\r\n
\r\n
\r\n {props.matchup && }\r\n
\r\n
\r\n {/* {props.matchup && } */}\r\n (\r\n {props.matchup &&\r\n props.matchup[0].BestSpreadPrice &&\r\n (parseInt(props.matchup[0].BestSpreadPrice, 10) > 0\r\n ? \"+\" + props.matchup[0].BestSpreadPrice\r\n : props.matchup[0].BestSpreadPrice)}\r\n )\r\n
\r\n
\r\n
\r\n
\r\n );\r\n })()}\r\n {props.state.lineTypes.find((l) => l.label === \"Money\") &&\r\n (() => {\r\n const sbId = props.matchup && props.matchup[0].BestMoneySportsbooksID;\r\n const sb = props.state.sportsbooks.find((sb) => sb.Id === sbId);\r\n let link: string = \"\";\r\n if (sb && sb.Link) {\r\n link = sb.Link;\r\n }\r\n return (\r\n \r\n
\r\n \r\n Best Money\r\n ({props.matchup && props.matchup[0].Name})\r\n \r\n {props.matchup && (\r\n \r\n )}\r\n
\r\n
\r\n {props.matchup &&\r\n (parseInt(props.matchup[0].BestMoneyPrice, 10) > 0\r\n ? \"+\" + props.matchup[0].BestMoneyPrice\r\n : props.matchup[0].BestMoneyPrice)}\r\n
\r\n {/*
*/}\r\n
\r\n
\r\n
\r\n );\r\n })()}\r\n
\r\n
\r\n {props.state.lineTypes.find((l) => l.label === \"Spread\") && (\r\n
\r\n
\r\n {props.matchup &&\r\n (parseFloat(props.matchup[0].CompSpreadPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n
Spread
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.matchup && (\r\n
\r\n {props.matchup && }\r\n
\r\n )}\r\n {props.matchup && (\r\n
\r\n {props.matchup && }\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n {props.matchup &&\r\n (parseFloat(props.matchup[1].CompSpreadPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n )}\r\n\r\n {props.state.lineTypes.find((l) => l.label === \"Money\") && (\r\n
\r\n
\r\n {props.matchup &&\r\n (parseFloat(props.matchup[0].CompMoneyPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n
Money
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {/*
\r\n
-7.5
\r\n
+7.5
\r\n
*/}\r\n
\r\n
\r\n {props.matchup &&\r\n (parseFloat(props.matchup[1].CompMoneyPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n )}\r\n\r\n {props.state.lineTypes.find((l) => l.label === \"Total\") && (\r\n
\r\n
\r\n {props.matchup &&\r\n (parseFloat(props.matchup[0].CompTotalPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n
Total
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.matchup &&\r\n props.matchup[0].CompTotalValue === props.matchup[1].CompTotalValue ? (\r\n
\r\n {props.matchup && }\r\n
\r\n ) : (\r\n props.matchup && (\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 {props.matchup &&\r\n (parseFloat(props.matchup[1].CompTotalPriceRatio) * 100).toFixed(2)}\r\n %\r\n
\r\n
\r\n )}\r\n
\r\n\r\n
\r\n {props.state.lineTypes.find((l) => l.label === \"Spread\") &&\r\n (() => {\r\n const sbId = props.matchup && props.matchup[1].BestSpreadSportsbooksID;\r\n const sb = props.state.sportsbooks.find((sb) => sb.Id === sbId);\r\n let link: string = \"\";\r\n if (sb && sb.Link) {\r\n link = sb.Link;\r\n }\r\n return (\r\n \r\n
\r\n \r\n Best Spread\r\n ({props.matchup && props.matchup[1].Name})\r\n \r\n {props.matchup && (\r\n \r\n )}\r\n
\r\n
\r\n {props.matchup && }\r\n
\r\n
\r\n (\r\n {props.matchup &&\r\n props.matchup[1].BestSpreadPrice &&\r\n (parseFloat(props.matchup[1].BestSpreadPrice) > 0\r\n ? \"+\" + props.matchup[1].BestSpreadPrice\r\n : props.matchup[1].BestSpreadPrice)}\r\n )\r\n
\r\n
\r\n
\r\n
\r\n );\r\n })()}\r\n {props.state.lineTypes.find((l) => l.label === \"Money\") &&\r\n (() => {\r\n const sbId = props.matchup && props.matchup[1].BestMoneySportsbooksID;\r\n const sb = props.state.sportsbooks.find((sb) => sb.Id === sbId);\r\n let link: string = \"\";\r\n if (sb && sb.Link) {\r\n link = sb.Link;\r\n }\r\n return (\r\n \r\n
\r\n \r\n Best Money\r\n ({props.matchup && props.matchup[1].Name})\r\n \r\n {props.matchup && (\r\n \r\n )}\r\n
\r\n
\r\n {props.matchup &&\r\n (parseInt(props.matchup[1].BestMoneyPrice, 10) > 0\r\n ? \"+\" + props.matchup[1].BestMoneyPrice\r\n : props.matchup[1].BestMoneyPrice)}\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 { Header };\r\n","import React from \"react\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { State, Action } from \"../../../App\";\r\nimport { UpcomingEvent, Participant, Line } from \"./matchup\";\r\nimport { format } from \"date-fns\";\r\nimport { RenderOdds } from \"../../helpers/oddsRenderer\";\r\nimport { getFractionOdds } from \"../../../helpers\";\r\n\r\ntype UpcomingEventsProps = {\r\n loading: boolean;\r\n state: State;\r\n dispatch: React.Dispatch;\r\n errorResults: boolean;\r\n upcomingEvents: UpcomingEvent[] | null;\r\n linesAccess(line: string): boolean;\r\n noPadding?: boolean;\r\n};\r\n\r\nconst UpcomingEventsTable: React.FC = (props: UpcomingEventsProps) => {\r\n const [hasOverflow, setHasOverflow] = React.useState(false);\r\n const showBetNowButton = props.state.betNowLink ? true : false;\r\n\r\n React.useEffect(() => {\r\n const upcomingEventsTable = document.getElementById(\"UpcomingEventsTable\");\r\n if (\r\n upcomingEventsTable &&\r\n (upcomingEventsTable.offsetHeight < upcomingEventsTable.scrollHeight ||\r\n upcomingEventsTable.offsetWidth < upcomingEventsTable.scrollWidth)\r\n ) {\r\n // your element has overflow\r\n setHasOverflow(true);\r\n } else {\r\n // your element doesn't have overflow\r\n setHasOverflow(false);\r\n }\r\n }, []);\r\n\r\n const { linesAccess, noPadding } = props;\r\n\r\n const renderLineOdds = (line: \"Spread\" | \"Money\" | \"Total\", listLines: Line[]) => {\r\n const foundLine = listLines.find((l) => l.LinesType === line);\r\n if (foundLine) {\r\n if (foundLine.LinesType === \"Money\") {\r\n return (\r\n \r\n {parseInt(foundLine.Price, 10) > 0 ? `+${foundLine.Price}` : foundLine.Price}\r\n \r\n );\r\n } else if (foundLine.LinesType === \"Total\") {\r\n return (\r\n <>\r\n \r\n {foundLine.Value || foundLine.Value === 0\r\n ? foundLine.LinesOUType === \"Over\"\r\n ? \"o\" + getFractionOdds(foundLine.Value.toString()).integer\r\n : \"u\" + getFractionOdds(foundLine.Value.toString()).integer\r\n : \"-\"}\r\n {foundLine.Value && (\r\n \r\n )}\r\n \r\n \r\n {foundLine.Price || parseFloat(foundLine.Price) === 0\r\n ? parseFloat(foundLine.Price) > 0\r\n ? \"+\" + foundLine.Price\r\n : foundLine.Price\r\n : \"-\"}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n {parseInt(foundLine.Price, 10) > 0 ? `+${foundLine.Price}` : foundLine.Price}\r\n \r\n \r\n );\r\n }\r\n } else {\r\n return -;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n Upcoming Events\r\n
\r\n
\r\n
\r\n
\r\n {linesAccess(\"Spread\") &&
Spread
}\r\n {linesAccess(\"Money\") &&
Money
}\r\n {linesAccess(\"Total\") &&
Total
}\r\n {showBetNowButton ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n
\r\n
\r\n {props.loading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : props.upcomingEvents && props.upcomingEvents.length === 0 ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n
\r\n
\r\n
\r\n {linesAccess(\"Spread\") &&
Spread
}\r\n {linesAccess(\"Money\") &&
Money
}\r\n {linesAccess(\"Total\") &&
Total
}\r\n {showBetNowButton &&
}\r\n
\r\n
\r\n
\r\n {!props.loading &&\r\n props.upcomingEvents &&\r\n props.upcomingEvents.map((event: UpcomingEvent, key: number) => (\r\n \r\n
\r\n
\r\n \r\n {format(new Date(event.Date.split(\" \").join(\"T\")), \"M/d/yyyy h:mma\")}\r\n \r\n
\r\n {linesAccess(\"Spread\") &&
}\r\n {linesAccess(\"Money\") &&
}\r\n {linesAccess(\"Total\") &&
}\r\n {showBetNowButton &&
}\r\n
\r\n
\r\n {event.ListParticipants.map((p: Participant, k: number) => (\r\n
\r\n
\r\n \r\n {p.Name}\r\n \r\n
\r\n {linesAccess(\"Spread\") && (\r\n
{renderLineOdds(\"Spread\", p.ListLines)}
\r\n )}\r\n {linesAccess(\"Money\") && (\r\n
{renderLineOdds(\"Money\", p.ListLines)}
\r\n )}\r\n {linesAccess(\"Total\") && (\r\n
{renderLineOdds(\"Total\", p.ListLines)}
\r\n )}\r\n {k % 2 ? (\r\n
\r\n \r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n page: \"History\",\r\n event: event.Id,\r\n })\r\n }\r\n >\r\n History\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n props.dispatch({\r\n type: \"SWITCH_PAGE_AND_EVENT\",\r\n page: \"Matchup\",\r\n event: event.Id,\r\n })\r\n }\r\n >\r\n Matchup\r\n \r\n
\r\n )}\r\n {showBetNowButton &&\r\n (k % 2 ? (\r\n \r\n ) : (\r\n \r\n \r\n window.open(props.state.betNowLink, \"_blank\")}\r\n >\r\n BET NOW\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 { UpcomingEventsTable };\r\n","import React from \"react\";\r\nimport { Action, State } from \"../../../App\";\r\nimport \"../styles/body.css\";\r\nimport { PastGame, Game, UpcomingEvent, Participant, Line, Odds } from \"./matchup\";\r\nimport { getSportsbookImageById, getSportsbookLink } from \"../../../helpers\";\r\nimport { format } from \"date-fns\";\r\nimport { RenderOdds } from \"../../helpers/oddsRenderer\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { UpcomingEventsTable } from \"./upcomingEventsTable\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n loading: boolean;\r\n pastGames: PastGame[] | null;\r\n upcomingEvents: UpcomingEvent[] | null;\r\n odds: Odds | null;\r\n errorResults: boolean;\r\n};\r\n\r\nconst Body: React.FC = (props: Props) => {\r\n const [selectedTeam, setSelectedTeam] = React.useState<0 | 1>(0);\r\n\r\n const getLineHeaderAbbr = (line: any) => {\r\n if (!line || line.length <= 0) return { abbr1: \"-\", abbr2: \"-\" };\r\n let abbrs = {\r\n abbr1: \"-\",\r\n abbr2: \"-\",\r\n };\r\n line.forEach((l: any) => {\r\n if (l.Away && l.Home) {\r\n abbrs.abbr1 = l.Away.Abbreviation;\r\n abbrs.abbr2 = l.Home.Abbreviation;\r\n }\r\n });\r\n return abbrs;\r\n };\r\n\r\n const linesAccess = (line: string) => {\r\n const found = props.state.lineTypes.find((l) => l.label.toLowerCase() === line.toLowerCase());\r\n if (found) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const pastGamesEmpty = (): boolean => {\r\n if (props.pastGames) {\r\n if (props.pastGames[0].Games) {\r\n if (props.pastGames[0].Games.length > 0) {\r\n return false;\r\n }\r\n }\r\n if (props.pastGames[1].Games) {\r\n if (props.pastGames[1].Games.length > 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n return (\r\n
\r\n {props.state.lineTypes.length === 1 && (\r\n
\r\n {/* Show upcoming events and betting line side by side if only one linestype. */}\r\n
\r\n )}\r\n
\r\n {/* Spread line START */}\r\n {props.state.lineTypes.find((l) => l.label === \"Spread\") && (\r\n
\r\n
\r\n
\r\n
Spread
\r\n \r\n !props.loading && props.dispatch({ type: \"SWITCH_PAGE\", page: \"History\" })\r\n }\r\n >\r\n History\r\n
\r\n
\r\n
\r\n
\r\n
Sportsbooks
\r\n
\r\n {!props.loading && (\r\n \r\n {/* {props.odds && props.odds.Spread.length > 0 && props.odds.Spread[0].Away\r\n ? props.odds.Spread[0].Away.Abbreviation\r\n : \"-\"} */}\r\n {props.odds && getLineHeaderAbbr(props.odds.Spread).abbr1}\r\n \r\n )}\r\n
\r\n
\r\n {!props.loading && (\r\n \r\n {/* {props.odds && props.odds.Spread.length > 0 && props.odds.Spread[0].Home\r\n ? props.odds.Spread[0].Home.Abbreviation\r\n : \"-\"} */}\r\n {props.odds && getLineHeaderAbbr(props.odds.Spread).abbr2}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {props.loading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {props.odds &&\r\n props.odds.Spread &&\r\n props.odds.Spread.length > 0 &&\r\n props.odds.Spread.map((s, key: number) => (\r\n \r\n
\r\n \r\n
\r\n {!s.Away ? (\r\n
-
\r\n ) : (\r\n
\r\n {!s.Away ? (\r\n -\r\n ) : s.Away.Value ? (\r\n \r\n ) : null}\r\n {!s.Away ? (\r\n -\r\n ) : s.Away.Price ? (\r\n s.Away.Price > 0 ? (\r\n {\"+\" + s.Away.Price}\r\n ) : (\r\n {s.Away.Price}\r\n )\r\n ) : null}\r\n
\r\n )}\r\n {!s.Home ? (\r\n
-
\r\n ) : (\r\n
\r\n {!s.Home ? (\r\n -\r\n ) : s.Home.Value ? (\r\n \r\n ) : null}\r\n {!s.Home ? (\r\n -\r\n ) : s.Home.Price ? (\r\n s.Home.Price > 0 ? (\r\n {\"+\" + s.Home.Price}\r\n ) : (\r\n {s.Home.Price}\r\n )\r\n ) : null}\r\n
\r\n )}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Spread line END */}\r\n\r\n {/* Money line START */}\r\n {props.state.lineTypes.find((l) => l.label === \"Money\") && (\r\n
\r\n
\r\n
\r\n
Money
\r\n \r\n !props.loading && props.dispatch({ type: \"SWITCH_PAGE\", page: \"History\" })\r\n }\r\n >\r\n History\r\n
\r\n
\r\n
\r\n
\r\n
Sportsbooks
\r\n
\r\n {!props.loading && (\r\n \r\n {/* {props.odds &&\r\n props.odds.Money.length > 0 && props.odds.Money[0].Away &&\r\n props.odds.Money[0].Away.Abbreviation} */}\r\n {props.odds && getLineHeaderAbbr(props.odds.Money).abbr1}\r\n \r\n )}\r\n
\r\n
\r\n {!props.loading && (\r\n \r\n {/* {props.odds &&\r\n props.odds.Money.length > 0 && props.odds.Money[0].Home &&\r\n props.odds.Money[0].Home.Abbreviation} */}\r\n {props.odds && getLineHeaderAbbr(props.odds.Money).abbr2}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {props.loading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {props.odds &&\r\n props.odds.Money &&\r\n props.odds.Money.length > 0 &&\r\n props.odds.Money.map((m, key: number) => (\r\n \r\n
\r\n \r\n
\r\n
\r\n {!m.Away ? (\r\n -\r\n ) : m.Away.Value ? (\r\n m.Away.Value > 0 ? (\r\n {\"+\" + m.Away.Value}\r\n ) : (\r\n {m.Away.Value}\r\n )\r\n ) : null}\r\n {!m.Away ? (\r\n -\r\n ) : m.Away.Price ? (\r\n m.Away.Price > 0 ? (\r\n {\"+\" + m.Away.Price}\r\n ) : (\r\n {m.Away.Price}\r\n )\r\n ) : null}\r\n
\r\n
\r\n {!m.Home ? (\r\n -\r\n ) : m.Home.Value ? (\r\n m.Home.Value > 0 ? (\r\n {\"+\" + m.Home.Value}\r\n ) : (\r\n {m.Home.Value}\r\n )\r\n ) : null}\r\n {!m.Home ? (\r\n -\r\n ) : m.Home.Price ? (\r\n m.Home.Price > 0 ? (\r\n {\"+\" + m.Home.Price}\r\n ) : (\r\n {m.Home.Price}\r\n )\r\n ) : null}\r\n
\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Money line END */}\r\n\r\n {/* Total line START */}\r\n {props.state.lineTypes.find((l) => l.label === \"Total\") && (\r\n
\r\n
\r\n
\r\n
Total
\r\n \r\n !props.loading && props.dispatch({ type: \"SWITCH_PAGE\", page: \"History\" })\r\n }\r\n >\r\n History\r\n
\r\n
\r\n
\r\n
\r\n
Sportsbooks
\r\n
\r\n {!props.loading && (\r\n \r\n Over\r\n {/* {props.odds && getLineHeaderAbbr(props.odds.Total).abbr1} */}\r\n \r\n )}\r\n
\r\n
\r\n {!props.loading && (\r\n \r\n Under\r\n {/* {props.odds && getLineHeaderAbbr(props.odds.Total).abbr2} */}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {props.loading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n {props.odds &&\r\n props.odds.Total &&\r\n props.odds.Total.length > 0 &&\r\n props.odds.Total.map((t, key: number) => (\r\n \r\n
\r\n \r\n
\r\n
\r\n {!t.Over ? (\r\n -\r\n ) : t.Over.Value ? (\r\n \r\n ) : null}\r\n {!t.Over ? (\r\n -\r\n ) : t.Over.Price ? (\r\n t.Over.Price > 0 ? (\r\n {\"+\" + t.Over.Price}\r\n ) : (\r\n {t.Over.Price}\r\n )\r\n ) : null}\r\n
\r\n
\r\n {!t.Under ? (\r\n -\r\n ) : t.Under.Value ? (\r\n \r\n ) : null}\r\n {!t.Under ? (\r\n -\r\n ) : t.Under.Price ? (\r\n t.Under.Price > 0 ? (\r\n {\"+\" + t.Under.Price}\r\n ) : (\r\n {t.Under.Price}\r\n )\r\n ) : null}\r\n
\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n )}\r\n {/* Total line END */}\r\n\r\n {/* UPCOMING EVENTS - SHOW HERE IF ONLY ONE LINETYPE ACCESS AND NO PAST GAMES DATA */}\r\n {pastGamesEmpty() && props.state.lineTypes.length === 1 && (\r\n \r\n )}\r\n
\r\n\r\n
\r\n {/* Last 10 Games Table START */}\r\n {(props.loading || !pastGamesEmpty()) && (\r\n
\r\n
\r\n
\r\n Last 10 Games\r\n {!props.loading && (\r\n
\r\n setSelectedTeam(0)}\r\n >\r\n {!props.loading && props.pastGames && props.pastGames[0].Name}\r\n
\r\n setSelectedTeam(1)}\r\n >\r\n {!props.loading && props.pastGames && props.pastGames[1].Name}\r\n
\r\n
\r\n )}\r\n
\r\n\r\n {props.loading ? (\r\n
\r\n \r\n
\r\n ) : props.errorResults ? (\r\n
\r\n \r\n
\r\n ) : props.pastGames &&\r\n props.pastGames.length > 0 &&\r\n (!props.pastGames[selectedTeam].Games ||\r\n props.pastGames[selectedTeam].Games.length <= 0) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n
\r\n
\r\n Date\r\n
\r\n
\r\n {props.pastGames &&\r\n props.pastGames.length > 0 &&\r\n props.pastGames[selectedTeam].Games &&\r\n props.pastGames[selectedTeam].Games.map((game: Game, key: number) => (\r\n
\r\n
\r\n {format(new Date(game.EventDate), \"M/d/yyyy h:mma\")}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
Opp
\r\n
Score
\r\n
Result
\r\n {linesAccess(\"Spread\") &&
Spread
}\r\n {linesAccess(\"Money\") &&
Money
}\r\n {linesAccess(\"Total\") &&
Total
}\r\n
\r\n
\r\n {props.pastGames &&\r\n props.pastGames.length > 0 &&\r\n props.pastGames[selectedTeam].Games &&\r\n props.pastGames[selectedTeam].Games.map((game: Game, key: number) => (\r\n
\r\n
\r\n {game.OppName}\r\n
\r\n
\r\n \r\n {game.AwayScore}-{game.HomeScore}\r\n \r\n
\r\n
\r\n {game.Result ? game.Result : \"-\"}\r\n
\r\n\r\n {/* Spread cell */}\r\n {linesAccess(\"Spread\") && (\r\n
\r\n \r\n {game.ValueSpread ? : \"-\"}\r\n \r\n \r\n {game.PriceSpread\r\n ? game.PriceSpread > 0\r\n ? \"+\" + game.PriceSpread\r\n : game.PriceSpread\r\n : \"-\"}\r\n \r\n
\r\n )}\r\n\r\n {/* Money cell */}\r\n {linesAccess(\"Money\") && (\r\n
\r\n \r\n {game.PriceMoney\r\n ? game.PriceMoney > 0\r\n ? \"+\" + game.PriceMoney\r\n : game.PriceMoney\r\n : \"-\"}\r\n \r\n
\r\n )}\r\n\r\n {/* Total cell */}\r\n {linesAccess(\"Total\") && (\r\n
\r\n \r\n {game.ValueTotal ? : \"-\"}\r\n \r\n \r\n {game.PriceTotal\r\n ? game.PriceTotal > 0\r\n ? \"+\" + game.PriceTotal\r\n : game.PriceTotal\r\n : \"-\"}\r\n \r\n
\r\n )}\r\n
\r\n ))}\r\n {/* {Array(10)\r\n .fill(null)\r\n .map((k: any) => (\r\n
\r\n
@Los Angeles Lakers
\r\n
41-15
\r\n
W
\r\n
-7.5 -114
\r\n
-30
\r\n
150
\r\n
\r\n ))} */}\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n {/* Last 10 Games Table END */}\r\n\r\n {/* Upcoming Events Table START */}\r\n {(props.state.lineTypes.length > 1 || !pastGamesEmpty()) && (\r\n \r\n )}\r\n {/* Upcoming Events Table END */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { Body };\r\n\r\n// Helpers\r\n\r\ntype ConditionalLinkRowProps = {\r\n link: string | undefined;\r\n};\r\n\r\nconst ConditionalLinkRow: React.FC = ({ children, link }) => {\r\n const hasLink = link ? true : false;\r\n return hasLink ? (\r\n
window.open(link, \"_blank\")} style={{ cursor: \"pointer\" }}>\r\n {children}\r\n
\r\n ) : (\r\n
{children}
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"../styles/matchup.css\";\r\nimport { State, Action } from \"../../../App\";\r\nimport { Header } from \"./header\";\r\nimport { Body } from \"./body\";\r\nimport axios from \"../../../Api\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n};\r\n\r\nexport type MatchUp = {\r\n Abbreviation: string;\r\n BestMoneyPrice: string;\r\n BestMoneySportsbooksID: number;\r\n BestSpreadPrice: string;\r\n BestSpreadSportsbooksID: number;\r\n BestSpreadValue: string;\r\n CompMoneyPriceRatio: string;\r\n CompSpreadPriceRatio: string;\r\n CompSpreadValue: string;\r\n CompTotalPriceRatio: string;\r\n CompTotalValue: string;\r\n Name: string;\r\n PredictedScore: string;\r\n PredictedScoreRatio: string;\r\n};\r\n\r\nexport type Game = {\r\n AwayScore: any;\r\n EventDate: string;\r\n EventName: string;\r\n HomeScore: any;\r\n OppName: string;\r\n PriceMoney: any;\r\n PriceSpread: any;\r\n PriceTotal: any;\r\n Result: any;\r\n TeamName: string;\r\n ValueMoney: any;\r\n ValueSpread: any;\r\n ValueTotal: any;\r\n};\r\n\r\nexport type PastGame = {\r\n Abbreviation: string;\r\n Games: Game[];\r\n Name: string;\r\n};\r\n\r\nexport type Line = {\r\n LinesType: string;\r\n LinesOUType: \"Over\" | \"Under\";\r\n Price: string;\r\n Value: number;\r\n};\r\n\r\nexport type Participant = {\r\n ListLines: Line[];\r\n Name: string;\r\n RotationNumber: number;\r\n};\r\n\r\nexport type UpcomingEvent = {\r\n Date: string;\r\n Id: number;\r\n ListParticipants: Participant[];\r\n Name: string;\r\n};\r\n\r\nexport type TeamOddsLine = {\r\n Abbreviation: string;\r\n Name: string;\r\n Price: number;\r\n Value: number;\r\n};\r\n\r\nexport type MoneyLine = {\r\n Away: TeamOddsLine;\r\n Home: TeamOddsLine;\r\n Id: number;\r\n Name: string;\r\n};\r\n\r\nexport type SpreadLine = {\r\n Away: TeamOddsLine;\r\n Home: TeamOddsLine;\r\n Id: number;\r\n Name: string;\r\n};\r\n\r\nexport type TotalLine = {\r\n Over: TeamOddsLine;\r\n Under: TeamOddsLine;\r\n Id: number;\r\n Name: string;\r\n};\r\n\r\nexport type Odds = {\r\n Money: MoneyLine[];\r\n Spread: SpreadLine[];\r\n Total: TotalLine[];\r\n};\r\n\r\nconst Matchup: React.FC = (props: Props) => {\r\n const [matchup, setMatchup] = React.useState(null);\r\n const [date, setDate] = React.useState(\"\");\r\n const [pastGames, setPastGames] = React.useState(null);\r\n const [upcomingEvents, setUpcomingEvents] = React.useState<\r\n UpcomingEvent[] | null\r\n >(null);\r\n const [odds, setOdds] = React.useState(null);\r\n const [loading, setLoading] = React.useState(true);\r\n const [errorResults, setErrorResults] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n window.scrollTo(0, 0);\r\n setLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/matchupmodule/matchup\",\r\n {},\r\n {\r\n params: { eventsID: props.state.selectedEvent },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` }\r\n }\r\n )\r\n .then(res => {\r\n if (res.data.status === \"1\") {\r\n setMatchup(res.data.details.Matchup);\r\n setDate(res.data.details.Date);\r\n setPastGames(res.data.details.Last10Games);\r\n setUpcomingEvents(res.data.details.UpcomingEvents);\r\n setOdds(res.data.details.Odds);\r\n // setTimeout(() => setLoading(false), 1000);\r\n setLoading(false);\r\n } else {\r\n setErrorResults(true);\r\n }\r\n })\r\n .catch(err => {\r\n setErrorResults(true);\r\n props.dispatch({ type: \"SET_APP_ERROR\" });\r\n console.log(err);\r\n })\r\n .finally(() => setLoading(false));\r\n }, [props.state.selectedEvent]);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport { Matchup };\r\n","import React from \"react\";\r\nimport LiveLinesLogo from \"../../assets/LiveLines.png\";\r\n\r\ntype PoweredByFooterProps = {\r\n poweredByLink: string;\r\n};\r\n\r\nconst PoweredByFooter: React.FC = ({ poweredByLink }) => {\r\n return (\r\n window.open(poweredByLink, \"_blank\")}\r\n >\r\n Powered by\r\n \r\n
\r\n );\r\n};\r\n\r\nexport { PoweredByFooter };\r\n","import React from \"react\";\r\nimport {\r\n getSportsbookImageById,\r\n getFractionOdds,\r\n getParamValue,\r\n getSportsbookLink,\r\n} from \"../../../helpers\";\r\nimport \"../styles/latestOdds.css\";\r\nimport { Action, State, Sportsbook } from \"../../../App\";\r\nimport axios from \"../../../Api\";\r\nimport { format } from \"date-fns\";\r\nimport { RenderOdds } from \"../../helpers/oddsRenderer\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { PoweredByFooter } from \"../../helpers/poweredByFooter\";\r\nimport { getSortReturn } from \"../../../helpers/getSortReturn\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n};\r\n\r\nconst LatestOdds = (props: Props) => {\r\n const [eventName, setEventName] = React.useState(\"\");\r\n const [eventsList, setEventsList] = React.useState([]);\r\n const [loading, setLoading] = React.useState(true);\r\n const [noResults, setNoResults] = React.useState(false);\r\n const [errorResults, setErrorResults] = React.useState(false);\r\n const [link, setLink] = React.useState(\"\");\r\n\r\n const eventCountParam = getParamValue(\"numberOfEvents\");\r\n let numberOfEvents = 3;\r\n if (eventCountParam) {\r\n numberOfEvents = parseInt(eventCountParam, 10);\r\n if (!numberOfEvents || typeof numberOfEvents !== \"number\") {\r\n numberOfEvents = 3;\r\n }\r\n }\r\n\r\n let linkFromQueryString = getParamValue(\"setLink\");\r\n if (!linkFromQueryString) {\r\n linkFromQueryString = \"\";\r\n }\r\n\r\n React.useEffect(() => {\r\n const lineTypeParam = getParamValue(\"lineType\");\r\n if (lineTypeParam) {\r\n switch (lineTypeParam.toLowerCase()) {\r\n case \"spread\":\r\n props.dispatch({\r\n type: \"SET_SELECTED_LINESTYPE\",\r\n lineType: \"Spread\",\r\n });\r\n break;\r\n case \"money\":\r\n props.dispatch({ type: \"SET_SELECTED_LINESTYPE\", lineType: \"Money\" });\r\n break;\r\n case \"total\":\r\n props.dispatch({ type: \"SET_SELECTED_LINESTYPE\", lineType: \"Total\" });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n setLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/oddsmodule/odds\",\r\n {},\r\n {\r\n params: {\r\n categoriesID: props.state.selectedCategory,\r\n num: numberOfEvents,\r\n link: linkFromQueryString,\r\n },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data.status === \"1\" && res.data.details) {\r\n setEventName(res.data.details.Name);\r\n if (res.data.details.ListEvents && res.data.details.ListEvents.length > 0) {\r\n let tEventList = res.data.details.ListEvents;\r\n const tLinesTypes: string[] = props.state.lineTypes.map((t: any) => t.value);\r\n const tSportsBooks: string[] = props.state.sportsbooks.map((s: Sportsbook) => s.Name);\r\n tEventList =\r\n tEventList &&\r\n tEventList.map((event: any) => ({\r\n ...event,\r\n ListParticipants: event.ListParticipants.map((p: any) => ({\r\n ...p,\r\n ListLines: p.ListLines.sort((a: any, b: any) =>\r\n getSortReturn(a, b, props.state.sportsbooks)\r\n ).filter(\r\n (l: any) =>\r\n tLinesTypes.includes(l.LinesType) && tSportsBooks.includes(l.Sportsbook)\r\n ),\r\n })),\r\n }));\r\n setEventsList(tEventList);\r\n setLink(res.data.details.Link);\r\n } else {\r\n setNoResults(true);\r\n }\r\n } else {\r\n setErrorResults(true);\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n setErrorResults(true);\r\n })\r\n .finally(() =>\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 100)\r\n );\r\n }, [props.state.selectedCategory, props.state.selectedLinesType]);\r\n\r\n if (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 (noResults) {\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 (errorResults) {\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 const handleViewAllLinesClick = (link: string) => {\r\n window.top.location.href = link;\r\n };\r\n\r\n return (\r\n
\r\n
{`Latest ${eventName} ODDS`}
\r\n
\r\n
\r\n {eventsList.map((event: any, key: number) => (\r\n \r\n
\r\n
\r\n {format(new Date(event.Date.split(\" \").join(\"T\")), \"M/d/yyyy h:mma\")}\r\n
\r\n
\r\n {event.ListParticipants.map((p: any, k: number) => (\r\n
\r\n
{p.Name}
\r\n
\r\n ))}\r\n
\r\n ))}\r\n
\r\n
\r\n {eventsList.map((event: any, key: number) => (\r\n \r\n
\r\n {props.state.sportsbooks.map((book: Sportsbook, key: number) => (\r\n \r\n
\r\n {book.Name}\r\n
\r\n \r\n ))}\r\n
\r\n {event.ListParticipants.map((p: any, key: number) => {\r\n return (\r\n
\r\n {p.ListLines.filter(\r\n (l: any) =>\r\n l.LinesType.toLowerCase() === props.state.selectedLinesType.toLowerCase()\r\n ).map((line: any, j: number) => {\r\n if (props.state.selectedLinesType.toLowerCase() === \"spread\") {\r\n return (\r\n \r\n \r\n {line.Value || line.Value === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0 ? (\r\n \r\n ) : (\r\n \"-\"\r\n )}\r\n \r\n \r\n );\r\n } else if (props.state.selectedLinesType.toLowerCase() === \"money\") {\r\n return (\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n \r\n );\r\n } else if (props.state.selectedLinesType.toLowerCase() === \"total\") {\r\n return (\r\n \r\n \r\n {line.Value || line.Value === 0\r\n ? line.LinesOUType === \"Over\"\r\n ? \"o\" + getFractionOdds(line.Value.toString()).integer\r\n : \"u\" + getFractionOdds(line.Value.toString()).integer\r\n : \"-\"}\r\n {line.Value && (\r\n \r\n )}\r\n \r\n \r\n {line.Price || line.Price === 0\r\n ? line.Price > 0\r\n ? \"+\" + line.Price\r\n : line.Price\r\n : \"-\"}\r\n \r\n \r\n );\r\n } else {\r\n throw new Error(\"Invalid line type selected\");\r\n }\r\n })}\r\n
\r\n );\r\n })}\r\n
\r\n ))}\r\n
\r\n
\r\n {link || props.state.poweredByLink ? (\r\n <>\r\n {link && (\r\n
\r\n {link && handleViewAllLinesClick(link)}>VIEW ALL LINES}\r\n
\r\n )}\r\n {props.state.poweredByLink && (\r\n \r\n )}\r\n \r\n ) : (\r\n
\r\n {link && handleViewAllLinesClick(link)}>VIEW ALL LINES}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport { LatestOdds };\r\n\r\ntype ConditionalLinkCellProps = {\r\n link: string | undefined;\r\n};\r\n\r\n// Helpers\r\nconst ConditionalLinkCell: React.FC = ({ link, children }) => {\r\n const hasLink = link ? true : false;\r\n return hasLink ? (\r\n
window.open(link, \"_blank\")} style={{ cursor: \"pointer\" }}>\r\n {children}\r\n
\r\n ) : (\r\n
{children}
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"../styles/upcomingEvents.css\";\r\nimport { Action, State } from \"../../../App\";\r\nimport { format } from \"date-fns\";\r\nimport axios from \"../../../Api\";\r\nimport { getParamValue } from \"../../../helpers\";\r\nimport { NoResults } from \"../../helpers/noResults\";\r\nimport { ErrorResults } from \"../../helpers/errorResults\";\r\nimport { Spinner } from \"../../helpers/spinner\";\r\nimport { PoweredByFooter } from \"../../helpers/poweredByFooter\";\r\n\r\ntype Props = {\r\n dispatch: React.Dispatch;\r\n state: State;\r\n};\r\n\r\nconst UpcomingEvents = (props: Props) => {\r\n const [loading, setLoading] = React.useState(true);\r\n const [eventName, setEventName] = React.useState(\"\");\r\n const [eventsList, setEventsList] = React.useState([]);\r\n const [noResults, setNoResults] = React.useState(false);\r\n const [errorResults, setErrorResults] = React.useState(false);\r\n const [link, setLink] = React.useState(null);\r\n\r\n const eventCountParam = getParamValue(\"numberOfEvents\");\r\n let numberOfEvents = 9;\r\n if (eventCountParam) {\r\n numberOfEvents = parseInt(eventCountParam, 10);\r\n if (!numberOfEvents || typeof numberOfEvents !== \"number\") {\r\n numberOfEvents = 9;\r\n }\r\n }\r\n\r\n let linkFromQueryString = getParamValue(\"setLink\");\r\n if (!linkFromQueryString) {\r\n linkFromQueryString = \"\";\r\n }\r\n\r\n React.useEffect(() => {\r\n setLoading(true);\r\n axios\r\n .post(\r\n \"/statsrole/upcomingmodule/upcoming\",\r\n {},\r\n {\r\n params: {\r\n categoriesID: props.state.selectedCategory,\r\n num: numberOfEvents,\r\n link: linkFromQueryString,\r\n },\r\n headers: { Authorization: `Bearer ${localStorage.getItem(\"at\")}` },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data.status === \"1\") {\r\n if (\r\n res.data.details &&\r\n res.data.details.ListEvents &&\r\n res.data.details.ListEvents.length > 0\r\n ) {\r\n setEventName(res.data.details.Name);\r\n setEventsList(res.data.details.ListEvents);\r\n setLink(res.data.details.Link);\r\n } else {\r\n setNoResults(true);\r\n }\r\n } else {\r\n setErrorResults(true);\r\n }\r\n })\r\n .catch((err) => {\r\n setErrorResults(true);\r\n console.log(err);\r\n })\r\n .finally(() =>\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 100)\r\n );\r\n }, [props.state.selectedCategory]);\r\n\r\n if (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 (noResults) {\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 (errorResults) {\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 const handleViewAllLinesClick = (link: string) => {\r\n window.top.location.href = link;\r\n };\r\n\r\n return (\r\n
\r\n
{`Upcoming ${eventName} Events`}
\r\n
\r\n
\r\n {eventsList.length > 0 &&\r\n eventsList.map((event: any, key: number) => (\r\n
\r\n
\r\n {format(new Date(event.Date.split(\" \").join(\"T\")), \"M/d/yyyy h:mma\")}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n {eventsList.length > 0 &&\r\n eventsList.map((event: any, key: number) => (\r\n
\r\n
\r\n {event.AwayName}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {event.HomeName}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n {link || props.state.poweredByLink ? (\r\n <>\r\n {link && (\r\n
\r\n {link && handleViewAllLinesClick(link)}>SEE MORE}\r\n
\r\n )}\r\n {props.state.poweredByLink && (\r\n \r\n )}\r\n \r\n ) : (\r\n
\r\n {link && handleViewAllLinesClick(link)}>SEE MORE}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport { UpcomingEvents };\r\n","import React from \"react\";\r\nimport { State } from \"../../App\";\r\nimport { PoweredByFooter } from \"./poweredByFooter\";\r\n\r\ntype Props = {\r\n state: State;\r\n};\r\n\r\nconst Page: React.FC = ({ children, state }) => {\r\n return (\r\n \r\n {children}\r\n {state.poweredByLink && }\r\n
\r\n );\r\n};\r\n\r\nexport { Page };\r\n","import React from \"react\";\r\nimport \"./App.css\";\r\nimport { OddsPage } from \"./features/odds/components/oddsPage\";\r\nimport { HistoryPage } from \"./features/history/components/history\";\r\nimport axios from \"./Api\";\r\nimport { Matchup } from \"./features/matchup/components/matchup\";\r\nimport { LatestOdds } from \"./features/summaryPages/components/latestOdds\";\r\nimport { UpcomingEvents } from \"./features/upcomingEvents/components/upcomingEvents\";\r\nimport { getParamValue } from \"./helpers\";\r\nimport { Page } from \"./features/helpers/page\";\r\n\r\nconst authApiEndpoint = \"/generalrole/authmodule/auth\";\r\n\r\ntype Page = \"Odds\" | \"Matchup\" | \"History\" | \"LatestOdds\" | \"UpcomingEvents\";\r\n\r\ntype CategoryDetails = {\r\n Id: number;\r\n Name: string;\r\n DisplayName: string;\r\n Abbreviation: string;\r\n bSelectedInitial: boolean;\r\n};\r\n\r\nexport type Event = {\r\n Date: string;\r\n Id: number;\r\n Name: string;\r\n ListParticipants: {\r\n RotationNumber: number;\r\n Name: string;\r\n ListLines: {\r\n Id: number;\r\n LinesType: string;\r\n LinesOUType: null | string;\r\n Price: number;\r\n Value: number;\r\n Sportsbook: string;\r\n }[];\r\n }[];\r\n GroupsID: number;\r\n};\r\n\r\nexport type GroupedEvent = {\r\n groupId: number | \"Other\";\r\n groupName: string;\r\n eventList: Event[];\r\n};\r\n\r\nexport type LineType = {\r\n Type: \"Spread\" | \"Money\" | \"Total\";\r\n bSelectedInitial: boolean;\r\n};\r\n\r\ntype Category = {\r\n Abbreviation: string;\r\n Id: number;\r\n Name: string;\r\n DisplayName: string;\r\n bSelectedInitial: boolean;\r\n};\r\n\r\nexport type Sportsbook = {\r\n Id: number;\r\n Name: string;\r\n OrderNum: number;\r\n Link: string | null;\r\n};\r\n\r\nexport type State = {\r\n eventList: Event[];\r\n groupedEvents: GroupedEvent[] | null;\r\n loading: boolean;\r\n loadingInitialState: boolean;\r\n currentPage: Page;\r\n selectedCategory: number | null;\r\n sportsDropdownVisible: boolean;\r\n selectedEvent: number | null;\r\n selectedLinesType: string;\r\n skin: string;\r\n betNowLink: string;\r\n poweredByLink: string;\r\n sportsbooks: Sportsbook[];\r\n lineTypes: any[];\r\n categories: SelectOption[];\r\n appError: boolean;\r\n};\r\n\r\nexport type SelectOption = {\r\n value: T;\r\n label: string;\r\n};\r\n\r\nexport type Action =\r\n | {\r\n type: \"SWITCH_PAGE\";\r\n page: Page;\r\n }\r\n | {\r\n type: \"SWITCH_EVENT\";\r\n event: number;\r\n }\r\n | {\r\n type: \"SWITCH_PAGE_AND_EVENT\";\r\n page: Page;\r\n event: number;\r\n }\r\n | {\r\n type: \"SET_AUTH_STATE\";\r\n skin: string;\r\n sportsbooks: Sportsbook[];\r\n lineTypes: any[];\r\n categories: SelectOption[];\r\n selectedCategory: number;\r\n betNowLink: string;\r\n poweredByLink: string;\r\n }\r\n | {\r\n type: \"SET_LOADING_STATE\";\r\n isLoading: boolean;\r\n }\r\n | {\r\n type: \"SET_EVENT_LIST\";\r\n eventList: Event[];\r\n }\r\n | {\r\n type: \"SET_GROUPED_EVENT_LIST\";\r\n groupedEventList: GroupedEvent[];\r\n }\r\n | {\r\n type: \"SET_SKIN\";\r\n skin: string;\r\n }\r\n | {\r\n type: \"SET_SPORTSBOOKS\";\r\n sportsbooks: Sportsbook[];\r\n }\r\n | {\r\n type: \"SET_LINETYPES\";\r\n lineTypes: LineType[];\r\n }\r\n | {\r\n type: \"SET_SELECTED_LINESTYPE\";\r\n lineType: string;\r\n }\r\n | {\r\n type: \"SET_SELECTED_CATEGORY\";\r\n category: number;\r\n }\r\n | {\r\n type: \"CONFIGURE_SPORTS_DROPDOWN\";\r\n visible: boolean;\r\n }\r\n | {\r\n type: \"SET_LOADING_INITIAL_STATE\";\r\n loadingInitialState: boolean;\r\n }\r\n | {\r\n type: \"SET_APP_ERROR\";\r\n };\r\n\r\nconst reducer = (state: State, action: Action): State => {\r\n //console.log(\"Action:\", action);\r\n switch (action.type) {\r\n case \"SWITCH_PAGE\":\r\n return {\r\n ...state,\r\n currentPage: action.page\r\n };\r\n case \"SWITCH_EVENT\":\r\n return {\r\n ...state,\r\n selectedEvent: action.event\r\n };\r\n case \"SWITCH_PAGE_AND_EVENT\":\r\n return {\r\n ...state,\r\n currentPage: action.page,\r\n selectedEvent: action.event\r\n };\r\n case \"SET_AUTH_STATE\":\r\n return {\r\n ...state,\r\n skin: action.skin,\r\n sportsbooks: action.sportsbooks,\r\n lineTypes: action.lineTypes,\r\n categories: action.categories,\r\n selectedCategory: action.selectedCategory,\r\n betNowLink: action.betNowLink,\r\n poweredByLink: action.poweredByLink\r\n };\r\n case \"SET_LOADING_STATE\":\r\n return {\r\n ...state,\r\n loading: action.isLoading\r\n };\r\n case \"SET_LOADING_INITIAL_STATE\":\r\n return {\r\n ...state,\r\n loadingInitialState: action.loadingInitialState\r\n };\r\n case \"SET_SELECTED_CATEGORY\":\r\n return {\r\n ...state,\r\n selectedCategory: action.category\r\n };\r\n case \"SET_EVENT_LIST\":\r\n return {\r\n ...state,\r\n eventList: action.eventList\r\n };\r\n case \"SET_GROUPED_EVENT_LIST\":\r\n return {\r\n ...state,\r\n groupedEvents: action.groupedEventList\r\n };\r\n case \"SET_SKIN\":\r\n return {\r\n ...state,\r\n skin: action.skin\r\n };\r\n case \"SET_SPORTSBOOKS\":\r\n return {\r\n ...state,\r\n sportsbooks: action.sportsbooks\r\n };\r\n case \"SET_LINETYPES\":\r\n return {\r\n ...state,\r\n lineTypes: action.lineTypes\r\n };\r\n case \"SET_SELECTED_LINESTYPE\":\r\n return {\r\n ...state,\r\n selectedLinesType: action.lineType\r\n };\r\n case \"CONFIGURE_SPORTS_DROPDOWN\":\r\n return {\r\n ...state,\r\n sportsDropdownVisible: action.visible\r\n };\r\n case \"SET_APP_ERROR\":\r\n return {\r\n ...state,\r\n appError: true\r\n };\r\n default:\r\n throw new Error(\"Bad action type\");\r\n }\r\n};\r\n\r\nconst initialState: State = {\r\n eventList: [],\r\n groupedEvents: null,\r\n loading: true,\r\n loadingInitialState: true,\r\n currentPage: \"Odds\",\r\n selectedCategory: null,\r\n sportsDropdownVisible: true,\r\n selectedEvent: null,\r\n selectedLinesType: \"\",\r\n skin: \"\",\r\n betNowLink: \"\",\r\n poweredByLink: \"\",\r\n sportsbooks: [],\r\n lineTypes: [],\r\n categories: [],\r\n appError: false\r\n};\r\n\r\nconst App: React.FC = () => {\r\n const [state, dispatch] = React.useReducer(\r\n reducer,\r\n initialState\r\n );\r\n\r\n const sortAndMapCategories = (\r\n categories: Category[]\r\n ): SelectOption[] => {\r\n categories.sort((a, b) => {\r\n if (a.bSelectedInitial) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n });\r\n let mappedCategories: SelectOption[] = categories.map(category => ({\r\n value: category.Id,\r\n label: category.DisplayName && category.DisplayName.length > 0 ? category.DisplayName : category.Name\r\n }));\r\n return mappedCategories;\r\n };\r\n\r\n const configureQueryStringSettings = (categories: CategoryDetails[]) => {\r\n let initialSport = getParamValue(\"startingSport\");\r\n const sportsDropdownVisible = getParamValue(\"sportSelectorVisible\");\r\n const pageSet = getParamValue(\"setPage\");\r\n\r\n if (!initialSport && !sportsDropdownVisible && !pageSet) {\r\n return;\r\n }\r\n\r\n if (initialSport) {\r\n initialSport = initialSport\r\n .split(\"%20\")\r\n .join(\" \")\r\n .split(\"+\")\r\n .join(\" \")\r\n .toLowerCase();\r\n\r\n // Try to find category by name\r\n let foundCategory = categories.find(\r\n c => c.DisplayName && c.DisplayName.length > 0 && c.DisplayName.toLowerCase() === initialSport\r\n );\r\n // Try to find by category name if not found by display name\r\n if (!foundCategory) {\r\n foundCategory = categories.find(\r\n c => c.Name.toLowerCase() === initialSport\r\n );\r\n }\r\n // Try to find by category abbreviation if not found by name\r\n if (!foundCategory) {\r\n foundCategory = categories.find(\r\n c => c.Abbreviation.toLowerCase() === initialSport\r\n );\r\n }\r\n // Try to find by category ID if not found by name or abbreviation\r\n if (!foundCategory) {\r\n foundCategory = categories.find(\r\n c => c.Id.toString() === initialSport && initialSport\r\n );\r\n }\r\n if (foundCategory) {\r\n dispatch({\r\n type: \"SET_SELECTED_CATEGORY\",\r\n category: foundCategory.Id\r\n });\r\n }\r\n }\r\n\r\n if (\r\n sportsDropdownVisible &&\r\n sportsDropdownVisible.toLowerCase() === \"false\"\r\n ) {\r\n dispatch({ type: \"CONFIGURE_SPORTS_DROPDOWN\", visible: false });\r\n }\r\n\r\n switch (pageSet && pageSet.toLowerCase()) {\r\n case \"latestodds\":\r\n dispatch({ type: \"SWITCH_PAGE\", page: \"LatestOdds\" });\r\n break;\r\n case \"upcomingevents\":\r\n dispatch({ type: \"SWITCH_PAGE\", page: \"UpcomingEvents\" });\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const sortAndMapLineTypeOptions = (lineTypes: any) => {\r\n lineTypes.sort((a: any, b: any) => {\r\n if (a.bSelectedInitial) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n });\r\n let lineTypeOptions: any = lineTypes.map((line: any) => ({\r\n value: line.Type,\r\n label: line.Type\r\n }));\r\n if (lineTypeOptions.length > 0) {\r\n dispatch({\r\n type: \"SET_SELECTED_LINESTYPE\",\r\n lineType: lineTypeOptions[0].value\r\n });\r\n }\r\n return lineTypeOptions;\r\n };\r\n\r\n React.useEffect(() => {\r\n axios\r\n .post(authApiEndpoint, {\r\n // Key: \"P5uEcu9rnN9eKTSEjDPChpr7tRcfHEqE4RjKUSfArncuMFf8X3adbrgxtZyJuDHF\"\r\n Key: getParamValue(\"Key\")\r\n })\r\n .then(authRes => {\r\n if (authRes.status && authRes.status === 200) {\r\n if (authRes.data && authRes.data.status === \"1\") {\r\n localStorage.setItem(\"at\", authRes.data.details.AccessToken);\r\n const tCategories: SelectOption[] = sortAndMapCategories(\r\n authRes.data.details.Categories\r\n );\r\n // setTimeout(() => {\r\n dispatch({\r\n type: \"SET_AUTH_STATE\",\r\n skin: authRes.data.details.Skin,\r\n // skin: \"MMAOddsBreaker\",\r\n sportsbooks: authRes.data.details.Sportsbooks.sort(\r\n (a: Sportsbook, b: Sportsbook) =>\r\n a.OrderNum < b.OrderNum ? -1 : 1\r\n ),\r\n betNowLink: authRes.data.details.BetNowLink\r\n ? authRes.data.details.BetNowLink\r\n : \"\",\r\n poweredByLink: authRes.data.details.PoweredByLink\r\n ? authRes.data.details.PoweredByLink\r\n : \"\",\r\n // sportsbooks: [{Name: \"5Dimes\", OrderNum: 1}, {Name: \"DSI\", OrderNum: 2}],\r\n // lineTypes: [{Type: \"Spread\", bSelectedInitial: false}, {Type: \"Money\", bSelectedInitial: true}],\r\n lineTypes: sortAndMapLineTypeOptions(\r\n authRes.data.details.LineTypes\r\n ),\r\n // lineTypes: [{value: \"Spread\", label: \"Spread\"}],\r\n categories: tCategories,\r\n selectedCategory: tCategories[0].value\r\n });\r\n // dispatch({ type: \"SET_SELECTED_CATEGORY\", category: tCategories[0].value });\r\n configureQueryStringSettings(\r\n authRes.data.details.Categories as CategoryDetails[]\r\n );\r\n // }, 1000);\r\n } else {\r\n // status not 1 - some error occured, (should have error message from API) handle here\r\n dispatch({ type: \"SET_APP_ERROR\" });\r\n }\r\n } else {\r\n // http status not 200, handle here\r\n dispatch({ type: \"SET_APP_ERROR\" });\r\n }\r\n })\r\n .catch(err => {\r\n dispatch({ type: \"SET_APP_ERROR\" });\r\n dispatch({ type: \"SET_LOADING_STATE\", isLoading: false });\r\n console.log(err);\r\n })\r\n .finally(() =>\r\n dispatch({\r\n type: \"SET_LOADING_INITIAL_STATE\",\r\n loadingInitialState: false\r\n })\r\n );\r\n }, []);\r\n\r\n useChangeBodyColour(state.skin);\r\n // useScrollToTop(state.currentPage);\r\n\r\n if (state.currentPage === \"Odds\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (state.currentPage === \"History\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (state.currentPage === \"Matchup\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (state.currentPage === \"LatestOdds\") {\r\n return ;\r\n } else if (state.currentPage === \"UpcomingEvents\") {\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 App;\r\n\r\nconst useChangeBodyColour = (skin: string) => {\r\n React.useEffect(() => {\r\n if (skin === \"MMAOddsBreaker\") {\r\n document.body.setAttribute(\"class\", \"Skin__MMAOddsBreaker\");\r\n } else if (skin === \"Default\") {\r\n document.body.setAttribute(\"class\", \"Default\");\r\n }\r\n }, [skin]);\r\n};\r\n\r\n// const useScrollToTop = (page: string) => {\r\n// React.useEffect(() => {\r\n// window.parent.scroll(0, 0);\r\n// }, [page]);\r\n// };\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { AlertCircle } from \"react-feather\";\r\n\r\nconst Error500 = () => (\r\n
\r\n \r\n \r\n \r\n

Temporarily Unavailable

\r\n

Please Click Here to reload the page

\r\n
\r\n);\r\n\r\nclass ErrorBoundary extends React.Component {\r\n state = {\r\n hasError: false\r\n };\r\n\r\n componentDidCatch = (error: any, info: any) => {\r\n this.setState({ hasError: true });\r\n };\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return ;\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport { ErrorBoundary };\r\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 \"./fonts/SpartanMB-Regular.otf\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport { ErrorBoundary } from \"./features/helpers/errorBoundary\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}