diff --git a/asset-manifest.json b/asset-manifest.json index 9154371..072cb44 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "/1vs1/static/css/main.3708b3d4.chunk.css", - "main.js": "/1vs1/static/js/main.8e0718ce.chunk.js", - "main.js.map": "/1vs1/static/js/main.8e0718ce.chunk.js.map", + "main.js": "/1vs1/static/js/main.01bf8c02.chunk.js", + "main.js.map": "/1vs1/static/js/main.01bf8c02.chunk.js.map", "runtime-main.js": "/1vs1/static/js/runtime-main.682e6eb8.js", "runtime-main.js.map": "/1vs1/static/js/runtime-main.682e6eb8.js.map", "static/css/2.f2c13908.chunk.css": "/1vs1/static/css/2.f2c13908.chunk.css", @@ -19,6 +19,6 @@ "static/css/2.f2c13908.chunk.css", "static/js/2.2e3638d5.chunk.js", "static/css/main.3708b3d4.chunk.css", - "static/js/main.8e0718ce.chunk.js" + "static/js/main.01bf8c02.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index fe12a1a..032cbae 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Fantasy Football: 1vs1
\ No newline at end of file +Fantasy Football: 1vs1
\ No newline at end of file diff --git a/static/js/main.8e0718ce.chunk.js b/static/js/main.01bf8c02.chunk.js similarity index 99% rename from static/js/main.8e0718ce.chunk.js rename to static/js/main.01bf8c02.chunk.js index 9baa8ac..0bd78eb 100644 --- a/static/js/main.8e0718ce.chunk.js +++ b/static/js/main.01bf8c02.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonp1vs1=this.webpackJsonp1vs1||[]).push([[0],{20:function(e,t,a){},44:function(e,t,a){"use strict";a.r(t);var n=a(0),s=a(1),r=a(13),i=a.n(r),c=(a(20),a(21),a(10)),l=a(2),o=a.n(l),u=a(9),h=a(5),p=a(6),d=a(8),f=a(7),y=a(14),j=a.n(y),b=a(4),m=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={value:""},n.handleChange=n.handleChange.bind(Object(b.a)(n)),n.handleSubmit=n.handleSubmit.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"handleChange",value:function(e){this.setState({value:e.target.value})}},{key:"handleSubmit",value:function(e){var t=new URLSearchParams(window.location.search);t.set("id",this.state.value),window.location.search=t.toString(),e.preventDefault()}},{key:"render",value:function(){return Object(n.jsxs)("form",{onSubmit:this.handleSubmit,children:[Object(n.jsxs)("label",{children:["On the website go to Points and copy this number from the URL:",Object(n.jsx)("i",{children:"https://fantasy.premierleague.com/entry/"}),Object(n.jsx)("b",{children:"2458458"}),Object(n.jsx)("i",{children:"/event/16"}),Object(n.jsx)("br",{}),Object(n.jsx)("br",{}),"Player ID:",Object(n.jsx)("br",{}),Object(n.jsx)("input",{type:"text",placeholder:"e.g. 2458458",value:this.state.value,onChange:this.handleChange})]}),Object(n.jsx)("br",{}),Object(n.jsx)("input",{type:"submit",value:"Check",className:"submit-entry"})]})}}]),a}(s.Component);var v=function(e){return Object(n.jsxs)("div",{className:"entry-info",children:[e.value,Object(n.jsx)("button",{onClick:e.onChange,className:"change-entry"})]})},g=a(11);var O=function(e){if(e.leagues&&e.leagues.length>0){var t=e.leagues.map((function(e){return Object(n.jsxs)("option",{"league-id":e.id,value:e.name,children:[e.entry_rank," - ",e.name]},e.id)}));return Object(n.jsx)("optgroup",{label:e.title,children:t})}return null},x=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={id:-1,value:"Select a League",leagues:e.leagues},n.handleChange=n.handleChange.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"handleChange",value:function(e){var t=e.target.selectedIndex,a=e.target[t].getAttribute("league-id");this.setState({id:a,value:e.target.value});var n=[].concat(Object(g.a)(this.state.leagues.classic),Object(g.a)(this.state.leagues.h2h)).find((function(e){return e.id===+a}));this.props.onChange(n)}},{key:"render",value:function(){var e=this.state.leagues.classic&&this.state.leagues.classic.filter((function(e){return"x"===e.league_type})),t=this.state.leagues.h2h,a=this.state.leagues.classic.filter((function(e){return"s"===e.league_type}));return Object(n.jsxs)("select",{value:this.state.value,onChange:this.handleChange,className:"league-select",children:[Object(n.jsx)("option",{value:"Select a League",disabled:!0,hidden:!0,children:"Select a League"}),Object(n.jsx)(O,{leagues:e,title:"Classic Leagues"}),Object(n.jsx)(O,{leagues:t,title:"Head-to-Head Leagues"}),Object(n.jsx)(O,{leagues:a,title:"Global Leagues"})]})}}]),a}(s.Component),k=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n,s;return Object(h.a)(this,a),(s=t.call(this,e)).state={value:null!==(n=s.props.playerId)&&void 0!==n?n:"Select a player"},s.handleChange=s.handleChange.bind(Object(b.a)(s)),s}return Object(p.a)(a,[{key:"handleChange",value:function(e){this.setState({value:+e.target.value}),this.props.onChange(+e.target.value)}},{key:"render",value:function(){var e=this.props.rankings.map((function(e){return Object(n.jsx)("option",{value:e.entry,children:e.points_for?"".concat(e.entry_name," ").concat(e.total," (").concat(e.matches_won,"-").concat(e.matches_drawn,"-").concat(e.matches_lost,")"):"".concat(e.entry_name," ").concat(e.total," (").concat(e.event_total,")")},e.rank_sort)}));return Object(n.jsxs)("select",{value:this.state.value,onChange:this.handleChange,className:"player-select",children:[Object(n.jsx)("option",{value:"Select a player",disabled:!0,hidden:!0,children:"Select a player"}),e]})}}]),a}(s.Component);var w=function(e){return Object(n.jsxs)("div",{className:"points-wrapper",children:[Object(n.jsx)("span",{className:"points",children:e.points}),e.minusPoints<0&&Object(n.jsxs)("span",{className:"minusPoints",children:["(",e.minusPoints,")"]})]})};var _=function(e){var t=Object(n.jsxs)("svg",{viewBox:"0 0 24 24",children:[Object(n.jsx)("circle",{cx:"12",cy:"12",r:"12"}),Object(n.jsx)("path",{d:"M15.0769667,14.370341 C14.4472145,15.2780796 13.4066319,15.8124328 12.3019667,15.795341 C10.4380057,15.795341 8.92696674,14.284302 8.92696674,12.420341 C8.92696674,10.55638 10.4380057,9.045341 12.3019667,9.045341 C13.3988206,9.06061696 14.42546,9.58781014 15.0769667,10.470341 L17.2519667,8.295341 C15.3643505,6.02401882 12.1615491,5.35094208 9.51934028,6.67031017 C6.87713147,7.98967826 5.49079334,10.954309 6.17225952,13.8279136 C6.8537257,16.7015182 9.42367333,18.7279285 12.3769667,18.720341 C14.2708124,18.7262708 16.0646133,17.8707658 17.2519667,16.395341 L15.0769667,14.370341 Z",fill:"currentColor"})]}),a=Object(n.jsxs)("svg",{viewBox:"0 0 24 24",children:[Object(n.jsx)("circle",{cx:"12",cy:"12",r:"12"}),Object(n.jsx)("polygon",{points:"13.5 .375 8.925 12.375 4.65 12.375 0 .375 3.15 .375 6.75 10.05 10.35 .375",transform:"translate(5.25 6)",fill:"currentColor"})]}),s=Object(n.jsx)("svg",{x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",children:Object(n.jsx)("g",{children:Object(n.jsx)("g",{transform:"translate(0.000000,511.000000) scale(0.100000,-0.100000)",children:Object(n.jsx)("path",{d:"M4565.9,4988.3c-1114.1-104.7-2151.2-576.8-2945.4-1337.4c-727-695.4-1224.8-1590.2-1420.3-2550.3C-222.6-979.5,717.7-3077.5,2552.9-4142.2c553.1-320,1199.1-535.4,1854.9-618.3c292.4-37.5,892.9-37.5,1185.3,0c991.7,124.5,1872.7,519.6,2639.2,1181.3c675.6,582.8,1222.8,1440.1,1469.7,2295.4c513.6,1783.8,11.8,3656.5-1317.6,4930.7C7371,4618.9,5944.7,5118.6,4565.9,4988.3z M5968.4,2096.2L7934,130.7L5962.5-1838.8L3993-3810.3l-557.1,559.1l-559,557.1l1408.5,1408.5L5691.9,120.8L4289.3,1523.3c-770.4,770.4-1402.6,1410.5-1402.6,1422.3c0,19.8,1086.5,1116.1,1106.2,1116.1C3998.9,4061.8,4887.9,3176.8,5968.4,2096.2z"})})})}),r=Object(n.jsx)("svg",{x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",children:Object(n.jsx)("g",{children:Object(n.jsx)("g",{transform:"translate(0.000000,511.000000) scale(0.100000,-0.100000)",children:Object(n.jsx)("path",{d:"M4573.9,5006.6c-1148.9-116.7-2173.2-587.3-2984-1372.4C-344,1763.5-403.4-1329.2,1459.4-3273c1906.3-1989.3,5064.3-2026.9,7010.1-83.1c739.6,735.6,1204.3,1649.2,1386.2,2719c43.5,257.1,59.3,984.8,27.7,1271.5c-112.7,1026.3-520.1,1949.8-1214.2,2742.7c-622.9,711.9-1530.5,1261.6-2463.9,1495c-413.3,102.8-632.8,128.5-1117.3,136.4C4848.8,5010.5,4617.4,5010.5,4573.9,5006.6z M6565.2,3482c302.5-302.5,549.7-557.6,549.7-569.5c0-9.9-628.8-648.6-1398.1-1417.8l-1400-1400l1409.9-1409.9l1407.9-1408l-563.6-563.6l-563.6-563.6L4034-1876.9L2062.5,94.6l1967.6,1967.6c1081.7,1081.7,1971.5,1967.6,1977.5,1967.6S6264.6,3782.5,6565.2,3482z"})})})}),i=e.picks.map((function(i){return Object(n.jsxs)("li",{className:"player-pick ".concat(e.addSeparator&&11===i.position?"separator":""),children:[Object(n.jsxs)("span",{className:"player-pick-name ".concat(i.isReserve?"reserve":""," type").concat(i.type),children:[Object(n.jsx)("span",{className:"chance chance-".concat(i.chance)}),i.name]}),i.isCaptain?Object(n.jsx)("span",{className:"cap-icon ".concat(i.isTripleCaptainActive?"inverted":""),children:t}):null,i.isViceCaptain?Object(n.jsx)("span",{className:"cap-icon ".concat(i.isTripleCaptainActive?"inverted":""),children:a}):null,Object(n.jsx)("span",{className:"player-pick-points",children:i.hasMatch?i.canPlay?i.hasMatchStarted?i.points:i.opposingTeam:"x":"-"}),i.goesOut?Object(n.jsx)("span",{className:"sub-icon goes-out",children:s}):null,i.goesIn?Object(n.jsx)("span",{className:"sub-icon goes-in",children:r}):null]},i.id)}));return Object(n.jsx)("div",{className:"player-picks-wrapper",children:Object(n.jsx)("ul",{className:"player-picks",children:i})})},C=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(){return Object(h.a)(this,a),t.apply(this,arguments)}return Object(p.a)(a,[{key:"handlePlayerChange",value:function(e){this.props.handlePlayerChange(e)}},{key:"render",value:function(){var e=this;return Object(n.jsxs)("div",{className:"player-info",children:[this.props.rankings&&Object(n.jsx)(k,{playerId:this.props.playerId,rankings:this.props.rankings,onChange:function(t){return e.handlePlayerChange(t)}}),Object(n.jsx)(w,{points:this.props.totalPoints,minusPoints:this.props.minusPoints}),this.props.playersToRender&&Object(n.jsx)(_,{picks:this.props.playersToRender,addSeparator:this.props.addSeparator})]})}}]),a}(s.Component),P="".concat("https://cryptic-plains-87247.herokuapp.com/").concat("https://fantasy.premierleague.com/api");function S(e){return L.apply(this,arguments)}function L(){return(L=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/entry/").concat(t,"/")).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){return e.isSuccess=!0,e})).catch((function(e){e.json().then((function(e){return{isSuccess:!1,error:e}}))})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function I(e,t,a){return N.apply(this,arguments)}function N(){return(N=Object(u.a)(o.a.mark((function e(t,a,n){var s,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=a?"/leagues-h2h/":"/leagues-classic/",r="".concat(P).concat(s).concat(t,"/standings/"),e.abrupt("return",fetch(r).then((function(e){return e.json()})).then((function(e){if(a){var s="".concat(P,"/leagues-h2h-matches/league/").concat(t,"/?page=1&event=").concat(n);return fetch(s).then((function(e){return e.json()})).then((function(t){return{rankings:e.standings.results,matches:t.results}}))}return{rankings:e.standings.results,matches:null}})));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(){return R.apply(this,arguments)}function R(){return(R=Object(u.a)(o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/bootstrap-static/")).then((function(e){return e.json()})).then((function(e){return{footballPlayers:e.elements,teams:e.teams}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function T(e){return A.apply(this,arguments)}function A(){return(A=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/event/").concat(t,"/live/")).then((function(e){return e.json()})).then((function(e){return{liveStats:e.elements}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function G(e){return B.apply(this,arguments)}function B(){return(B=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/fixtures/?event=").concat(t)).then((function(e){return e.json()})).then((function(e){return{fixtures:e}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function E(e,t){return W.apply(this,arguments)}function W(){return(W=Object(u.a)(o.a.mark((function e(t,a){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/entry/").concat(t,"/event/").concat(a,"/picks/")).then((function(e){return e.json()})).then((function(e){return e})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function z(e,t,a,n,s,r,i){return D.apply(this,arguments)}function D(){return(D=Object(u.a)(o.a.mark((function e(t,a,n,s,r,i,l){var u,h,p,d,f,y,j,b,m,v,g,O,x;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E(a,n);case 2:return h=e.sent,p=l.map((function(e){return e.team_h})).concat(l.map((function(e){return e.team_a}))),d=h.entry_history.event_transfers_cost,f=h.active_chip&&"bboost"===h.active_chip,y=h.active_chip&&"3xc"===h.active_chip,j=h.automatic_subs&&h.automatic_subs.length>0,b=F(l),m=h.picks.map((function(e){var t,a=s.find((function(t){return t.id===e.element})),n=i.find((function(t){return t.id===e.element})),c={id:e.element,teamId:a.team,name:a.web_name,points:n.stats.total_points,minutes:n.stats.minutes,bonus:n.stats.bonus,hasMatch:p.includes(a.team),hasMatchStarted:l.some((function(e){return e.started&&(e.team_h===a.team||e.team_a===a.team)})),opposingTeam:U(l,r,a.team),canPlay:null,hasPlayed:n.stats.minutes>0||n.stats.yellow_cards>0||n.stats.red_cards>0,goesIn:null,goesOut:null,isReserve:null,isCaptain:e.is_captain,isViceCaptain:e.is_vice_captain,isTripleCaptainActive:y,multiplier:e.multiplier,position:e.position,type:a.element_type,chance:null!==(t=a.chance_of_playing_this_round)&&void 0!==t?t:100};c.canPlay=V(c,l);var o=b.find((function(e){return e.element===c.id}));return o&&(c.bonus+=o.points,c.points+=o.points),c})),f||(H(m,11),j?J(m,h.automatic_subs):Z(m)),v=m.find((function(e){return e.isCaptain})),g=y?3:2,m.map((function(e){return e.points=K(e,v.canPlay,g)})),O=Q(m)-d,u={},Object(c.a)(u,"".concat(t,"picks"),h.picks),Object(c.a)(u,"".concat(t,"addSeparator"),!f),Object(c.a)(u,"".concat(t,"totalPoints"),O),Object(c.a)(u,"".concat(t,"minusPoints"),-d),Object(c.a)(u,"".concat(t,"playersToRender"),m),x=u,e.abrupt("return",x);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function F(e){return function(){for(var e=arguments.length,t=new Array(e),a=0;a=3)break;n>1?a=1:a--,t[i].points=a,s++,r.push(t[i])}return r})))}function U(e,t,a){var n=e.find((function(e){return e.team_h===a||e.team_a===a}));if(n){var s="";return s=n.team_h===a?n.team_a:n.team_h,t.find((function(e){return e.id===s})).short_name}return null}function V(e,t){var a=e.hasMatch,n=a;a&&(!t.filter((function(t){return t.team_h===e.teamId||t.team_a===e.teamId})).some((function(e){return!1===e.finished_provisional}))&&(n=e.hasPlayed));return n}function H(e,t){for(var a=t;a1&&!e.isReserve&&(!e.hasMatch||!e.canPlay)})),s=e.filter((function(e){return e.position>12&&e.canPlay})),r=0;r=this.props.gameweek&&(this.props.player1&&this.fillPlayerPicksForEvent("player1",this.props.player1,this.props.gameweek),this.props.player2&&this.fillPlayerPicksForEvent("player2",this.props.player2,this.props.gameweek))}},{key:"handlePlayerChange",value:function(e,t){this.props.handlePlayerChange(e,t)}},{key:"fillPlayerPicksForEvent",value:function(){var e=Object(u.a)(o.a.mark((function e(t,a,n){var s;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.showLoader(),!(this.props.footballPlayers&&this.props.teams&&this.props.liveStats&&this.props.fixtures)){e.next=6;break}return e.next=4,z(t,a,n,this.props.footballPlayers,this.props.teams,this.props.liveStats,this.props.fixtures);case 4:s=e.sent,this.setState(s);case 6:this.hideLoader();case 7:case"end":return e.stop()}}),e,this)})));return function(t,a,n){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this;return Object(n.jsxs)("div",{className:"details-wrapper",children:[Object(n.jsxs)("div",{className:"players-info",children:[this.props.rankings&&Object(n.jsx)(C,{playerId:this.props.player1,rankings:this.props.rankings,totalPoints:this.state.player1totalPoints,minusPoints:this.state.player1minusPoints,playersToRender:this.state.player1playersToRender,handlePlayerChange:function(t){return e.handlePlayerChange("player1",t)},addSeparator:this.state.player1addSeparator},this.props.player1),this.props.rankings&&Object(n.jsx)(C,{playerId:this.props.player2,rankings:this.props.rankings,totalPoints:this.state.player2totalPoints,minusPoints:this.state.player2minusPoints,playersToRender:this.state.player2playersToRender,handlePlayerChange:function(t){return e.handlePlayerChange("player2",t)},addSeparator:this.state.player2addSeparator},this.props.player2)]}),Object(n.jsxs)("div",{className:"refresh-wrapper",children:[this.props.ish2h?Object(n.jsx)("button",{onClick:this.backToLeague,className:"refresh back",children:"Go back"}):null,Object(n.jsx)("button",{onClick:this.refresh,className:"refresh",disabled:this.state.isLoading,children:"Refresh"})]})]})}}]),a}(s.Component),Y=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={isLoading:!1},n.openMatch=n.openMatch.bind(Object(b.a)(n)),n.refreshAll=n.refreshAll.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"openMatch",value:function(e,t){this.props.openMatch(e,t)}},{key:"refreshAll",value:function(e){this.props.refreshAll()}},{key:"render",value:function(){var e=this;if(this.props.matches&&this.props.matches.length>0){var t=this.props.matches.map((function(t){return Object(n.jsxs)("div",{className:"match-row"+(e.props.playerId===t.entry_1_entry||e.props.playerId===t.entry_2_entry?" own-match":""),onClick:function(){return e.openMatch(t.entry_1_entry,t.entry_2_entry)},children:[Object(n.jsxs)("span",{className:"match-player text-right pr10",children:[Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_1_name}),Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_1_player_name})]}),Object(n.jsx)("span",{className:"points-small pr5",children:t.entry_1_points}),Object(n.jsx)("span",{className:"points-small pl5",children:t.entry_2_points}),Object(n.jsxs)("span",{className:"match-player text-left pl10",children:[Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_2_name}),Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_2_player_name})]})]},t.id)}));return Object(n.jsxs)("div",{children:[t,Object(n.jsx)("div",{className:"refresh-wrapper",children:this.props.inProgress?Object(n.jsx)("button",{onClick:this.refreshAll,className:"refresh",disabled:this.state.isLoading,children:"Refresh all"}):null})]})}return null}}]),a}(s.Component),$=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={value:e.currentEvent},n.handleChange=n.handleChange.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"handleChange",value:function(e){this.setState({value:e.target.value}),this.props.onChange(+e.target.value)}},{key:"render",value:function(){for(var e=Array(38),t=0;t0){var t=e.leagues.map((function(e){return Object(n.jsxs)("option",{"league-id":e.id,value:e.name,children:[e.entry_rank," - ",e.name]},e.id)}));return Object(n.jsx)("optgroup",{label:e.title,children:t})}return null},x=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={id:-1,value:"Select a League",leagues:e.leagues},n.handleChange=n.handleChange.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"handleChange",value:function(e){var t=e.target.selectedIndex,a=e.target[t].getAttribute("league-id");this.setState({id:a,value:e.target.value});var n=[].concat(Object(g.a)(this.state.leagues.classic),Object(g.a)(this.state.leagues.h2h)).find((function(e){return e.id===+a}));this.props.onChange(n)}},{key:"render",value:function(){var e=this.state.leagues.classic&&this.state.leagues.classic.filter((function(e){return"x"===e.league_type})),t=this.state.leagues.h2h,a=this.state.leagues.classic.filter((function(e){return"s"===e.league_type}));return Object(n.jsxs)("select",{value:this.state.value,onChange:this.handleChange,className:"league-select",children:[Object(n.jsx)("option",{value:"Select a League",disabled:!0,hidden:!0,children:"Select a League"}),Object(n.jsx)(O,{leagues:e,title:"Classic Leagues"}),Object(n.jsx)(O,{leagues:t,title:"Head-to-Head Leagues"}),Object(n.jsx)(O,{leagues:a,title:"Global Leagues"})]})}}]),a}(s.Component),k=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n,s;return Object(h.a)(this,a),(s=t.call(this,e)).state={value:null!==(n=s.props.playerId)&&void 0!==n?n:"Select a player"},s.handleChange=s.handleChange.bind(Object(b.a)(s)),s}return Object(p.a)(a,[{key:"handleChange",value:function(e){this.setState({value:+e.target.value}),this.props.onChange(+e.target.value)}},{key:"render",value:function(){var e=this.props.rankings.map((function(e){return Object(n.jsx)("option",{value:e.entry,children:e.points_for?"".concat(e.entry_name," ").concat(e.total," (").concat(e.matches_won,"-").concat(e.matches_drawn,"-").concat(e.matches_lost,")"):"".concat(e.entry_name," ").concat(e.total," (").concat(e.event_total,")")},e.rank_sort)}));return Object(n.jsxs)("select",{value:this.state.value,onChange:this.handleChange,className:"player-select",children:[Object(n.jsx)("option",{value:"Select a player",disabled:!0,hidden:!0,children:"Select a player"}),e]})}}]),a}(s.Component);var w=function(e){return Object(n.jsxs)("div",{className:"points-wrapper",children:[Object(n.jsx)("span",{className:"points",children:e.points}),e.minusPoints<0&&Object(n.jsxs)("span",{className:"minusPoints",children:["(",e.minusPoints,")"]})]})};var _=function(e){var t=Object(n.jsxs)("svg",{viewBox:"0 0 24 24",children:[Object(n.jsx)("circle",{cx:"12",cy:"12",r:"12"}),Object(n.jsx)("path",{d:"M15.0769667,14.370341 C14.4472145,15.2780796 13.4066319,15.8124328 12.3019667,15.795341 C10.4380057,15.795341 8.92696674,14.284302 8.92696674,12.420341 C8.92696674,10.55638 10.4380057,9.045341 12.3019667,9.045341 C13.3988206,9.06061696 14.42546,9.58781014 15.0769667,10.470341 L17.2519667,8.295341 C15.3643505,6.02401882 12.1615491,5.35094208 9.51934028,6.67031017 C6.87713147,7.98967826 5.49079334,10.954309 6.17225952,13.8279136 C6.8537257,16.7015182 9.42367333,18.7279285 12.3769667,18.720341 C14.2708124,18.7262708 16.0646133,17.8707658 17.2519667,16.395341 L15.0769667,14.370341 Z",fill:"currentColor"})]}),a=Object(n.jsxs)("svg",{viewBox:"0 0 24 24",children:[Object(n.jsx)("circle",{cx:"12",cy:"12",r:"12"}),Object(n.jsx)("polygon",{points:"13.5 .375 8.925 12.375 4.65 12.375 0 .375 3.15 .375 6.75 10.05 10.35 .375",transform:"translate(5.25 6)",fill:"currentColor"})]}),s=Object(n.jsx)("svg",{x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",children:Object(n.jsx)("g",{children:Object(n.jsx)("g",{transform:"translate(0.000000,511.000000) scale(0.100000,-0.100000)",children:Object(n.jsx)("path",{d:"M4565.9,4988.3c-1114.1-104.7-2151.2-576.8-2945.4-1337.4c-727-695.4-1224.8-1590.2-1420.3-2550.3C-222.6-979.5,717.7-3077.5,2552.9-4142.2c553.1-320,1199.1-535.4,1854.9-618.3c292.4-37.5,892.9-37.5,1185.3,0c991.7,124.5,1872.7,519.6,2639.2,1181.3c675.6,582.8,1222.8,1440.1,1469.7,2295.4c513.6,1783.8,11.8,3656.5-1317.6,4930.7C7371,4618.9,5944.7,5118.6,4565.9,4988.3z M5968.4,2096.2L7934,130.7L5962.5-1838.8L3993-3810.3l-557.1,559.1l-559,557.1l1408.5,1408.5L5691.9,120.8L4289.3,1523.3c-770.4,770.4-1402.6,1410.5-1402.6,1422.3c0,19.8,1086.5,1116.1,1106.2,1116.1C3998.9,4061.8,4887.9,3176.8,5968.4,2096.2z"})})})}),r=Object(n.jsx)("svg",{x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",children:Object(n.jsx)("g",{children:Object(n.jsx)("g",{transform:"translate(0.000000,511.000000) scale(0.100000,-0.100000)",children:Object(n.jsx)("path",{d:"M4573.9,5006.6c-1148.9-116.7-2173.2-587.3-2984-1372.4C-344,1763.5-403.4-1329.2,1459.4-3273c1906.3-1989.3,5064.3-2026.9,7010.1-83.1c739.6,735.6,1204.3,1649.2,1386.2,2719c43.5,257.1,59.3,984.8,27.7,1271.5c-112.7,1026.3-520.1,1949.8-1214.2,2742.7c-622.9,711.9-1530.5,1261.6-2463.9,1495c-413.3,102.8-632.8,128.5-1117.3,136.4C4848.8,5010.5,4617.4,5010.5,4573.9,5006.6z M6565.2,3482c302.5-302.5,549.7-557.6,549.7-569.5c0-9.9-628.8-648.6-1398.1-1417.8l-1400-1400l1409.9-1409.9l1407.9-1408l-563.6-563.6l-563.6-563.6L4034-1876.9L2062.5,94.6l1967.6,1967.6c1081.7,1081.7,1971.5,1967.6,1977.5,1967.6S6264.6,3782.5,6565.2,3482z"})})})}),i=e.picks.map((function(i){return Object(n.jsxs)("li",{className:"player-pick ".concat(e.addSeparator&&11===i.position?"separator":""),children:[Object(n.jsxs)("span",{className:"player-pick-name ".concat(i.isReserve?"reserve":""," type").concat(i.type),children:[Object(n.jsx)("span",{className:"chance chance-".concat(i.chance)}),i.name]}),i.isCaptain?Object(n.jsx)("span",{className:"cap-icon ".concat(i.isTripleCaptainActive?"inverted":""),children:t}):null,i.isViceCaptain?Object(n.jsx)("span",{className:"cap-icon ".concat(i.isTripleCaptainActive?"inverted":""),children:a}):null,Object(n.jsx)("span",{className:"player-pick-points",children:i.hasMatch?i.canPlay?i.hasMatchStarted?i.points:i.opposingTeam:"x":"-"}),i.goesOut?Object(n.jsx)("span",{className:"sub-icon goes-out",children:s}):null,i.goesIn?Object(n.jsx)("span",{className:"sub-icon goes-in",children:r}):null]},i.id)}));return Object(n.jsx)("div",{className:"player-picks-wrapper",children:Object(n.jsx)("ul",{className:"player-picks",children:i})})},C=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(){return Object(h.a)(this,a),t.apply(this,arguments)}return Object(p.a)(a,[{key:"handlePlayerChange",value:function(e){this.props.handlePlayerChange(e)}},{key:"render",value:function(){var e=this;return Object(n.jsxs)("div",{className:"player-info",children:[this.props.rankings&&Object(n.jsx)(k,{playerId:this.props.playerId,rankings:this.props.rankings,onChange:function(t){return e.handlePlayerChange(t)}}),Object(n.jsx)(w,{points:this.props.totalPoints,minusPoints:this.props.minusPoints}),this.props.playersToRender&&Object(n.jsx)(_,{picks:this.props.playersToRender,addSeparator:this.props.addSeparator})]})}}]),a}(s.Component),P="".concat("https://cryptic-plains-87247.herokuapp.com/").concat("https://fantasy.premierleague.com/api");function S(e){return L.apply(this,arguments)}function L(){return(L=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/entry/").concat(t,"/")).then((function(e){return e.ok?e.json():Promise.reject(e)})).then((function(e){return e.isSuccess=!0,e})).catch((function(e){e.json().then((function(e){return{isSuccess:!1,error:e}}))})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function I(e,t,a){return N.apply(this,arguments)}function N(){return(N=Object(u.a)(o.a.mark((function e(t,a,n){var s,r;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=a?"/leagues-h2h/":"/leagues-classic/",r="".concat(P).concat(s).concat(t,"/standings/"),e.abrupt("return",fetch(r).then((function(e){return e.json()})).then((function(e){if(a){var s="".concat(P,"/leagues-h2h-matches/league/").concat(t,"/?page=1&event=").concat(n);return fetch(s).then((function(e){return e.json()})).then((function(t){return{rankings:e.standings.results,matches:t.results}}))}return{rankings:e.standings.results,matches:null}})));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(){return R.apply(this,arguments)}function R(){return(R=Object(u.a)(o.a.mark((function e(){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/bootstrap-static/")).then((function(e){return e.json()})).then((function(e){return{footballPlayers:e.elements,teams:e.teams}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function T(e){return A.apply(this,arguments)}function A(){return(A=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/event/").concat(t,"/live/")).then((function(e){return e.json()})).then((function(e){return{liveStats:e.elements}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function G(e){return B.apply(this,arguments)}function B(){return(B=Object(u.a)(o.a.mark((function e(t){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/fixtures/?event=").concat(t)).then((function(e){return e.json()})).then((function(e){return{fixtures:e}})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function E(e,t){return W.apply(this,arguments)}function W(){return(W=Object(u.a)(o.a.mark((function e(t,a){return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("".concat(P,"/entry/").concat(t,"/event/").concat(a,"/picks/")).then((function(e){return e.json()})).then((function(e){return e})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function z(e,t,a,n,s,r,i){return D.apply(this,arguments)}function D(){return(D=Object(u.a)(o.a.mark((function e(t,a,n,s,r,i,l){var u,h,p,d,f,y,j,b,m,v,g,O,x;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E(a,n);case 2:return h=e.sent,p=l.map((function(e){return e.team_h})).concat(l.map((function(e){return e.team_a}))),d=h.entry_history.event_transfers_cost,f=h.active_chip&&"bboost"===h.active_chip,y=h.active_chip&&"3xc"===h.active_chip,j=h.automatic_subs&&h.automatic_subs.length>0,b=F(l),m=h.picks.map((function(e){var t,a=s.find((function(t){return t.id===e.element})),n=i.find((function(t){return t.id===e.element})),c={id:e.element,teamId:a.team,name:a.web_name,points:n.stats.total_points,minutes:n.stats.minutes,bonus:n.stats.bonus,hasMatch:p.includes(a.team),hasMatchStarted:l.some((function(e){return e.started&&(e.team_h===a.team||e.team_a===a.team)})),opposingTeam:U(l,r,a.team),canPlay:null,hasPlayed:n.stats.minutes>0||n.stats.yellow_cards>0||n.stats.red_cards>0,goesIn:null,goesOut:null,isReserve:null,isCaptain:e.is_captain,isViceCaptain:e.is_vice_captain,isTripleCaptainActive:y,multiplier:e.multiplier,position:e.position,type:a.element_type,chance:null!==(t=a.chance_of_playing_this_round)&&void 0!==t?t:100};c.canPlay=V(c,l);var o=b.find((function(e){return e.element===c.id}));return o&&(c.bonus+=o.points,c.points+=o.points),c})),f||(H(m,11),j?J(m,h.automatic_subs):Z(m)),v=m.find((function(e){return e.isCaptain})),g=y?3:2,m.map((function(e){return e.points=K(e,v.canPlay,g)})),O=Q(m)-d,u={},Object(c.a)(u,"".concat(t,"picks"),h.picks),Object(c.a)(u,"".concat(t,"addSeparator"),!f),Object(c.a)(u,"".concat(t,"totalPoints"),O),Object(c.a)(u,"".concat(t,"minusPoints"),-d),Object(c.a)(u,"".concat(t,"playersToRender"),m),x=u,e.abrupt("return",x);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function F(e){return function(){for(var e=arguments.length,t=new Array(e),a=0;a=3)break;n>1?a=1:a--,t[i].points=a,s++,r.push(t[i])}return r})))}function U(e,t,a){var n=e.find((function(e){return e.team_h===a||e.team_a===a}));if(n){var s="";return s=n.team_h===a?n.team_a:n.team_h,t.find((function(e){return e.id===s})).short_name}return null}function V(e,t){var a=e.hasMatch,n=a;a&&(!t.filter((function(t){return t.team_h===e.teamId||t.team_a===e.teamId})).some((function(e){return!1===e.finished_provisional}))&&(n=e.hasPlayed));return n}function H(e,t){for(var a=t;a1&&!e.isReserve&&(!e.hasMatch||!e.canPlay)})),s=e.filter((function(e){return e.position>12&&e.canPlay})),r=0;r=this.props.gameweek&&(this.props.player1&&this.fillPlayerPicksForEvent("player1",this.props.player1,this.props.gameweek),this.props.player2&&this.fillPlayerPicksForEvent("player2",this.props.player2,this.props.gameweek))}},{key:"handlePlayerChange",value:function(e,t){this.props.handlePlayerChange(e,t)}},{key:"fillPlayerPicksForEvent",value:function(){var e=Object(u.a)(o.a.mark((function e(t,a,n){var s;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.showLoader(),!(this.props.footballPlayers&&this.props.teams&&this.props.liveStats&&this.props.fixtures)){e.next=6;break}return e.next=4,z(t,a,n,this.props.footballPlayers,this.props.teams,this.props.liveStats,this.props.fixtures);case 4:s=e.sent,this.setState(s);case 6:this.hideLoader();case 7:case"end":return e.stop()}}),e,this)})));return function(t,a,n){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this;return Object(n.jsxs)("div",{className:"details-wrapper",children:[Object(n.jsxs)("div",{className:"players-info",children:[this.props.rankings&&Object(n.jsx)(C,{playerId:this.props.player1,rankings:this.props.rankings,totalPoints:this.state.player1totalPoints,minusPoints:this.state.player1minusPoints,playersToRender:this.state.player1playersToRender,handlePlayerChange:function(t){return e.handlePlayerChange("player1",t)},addSeparator:this.state.player1addSeparator},this.props.player1),this.props.rankings&&Object(n.jsx)(C,{playerId:this.props.player2,rankings:this.props.rankings,totalPoints:this.state.player2totalPoints,minusPoints:this.state.player2minusPoints,playersToRender:this.state.player2playersToRender,handlePlayerChange:function(t){return e.handlePlayerChange("player2",t)},addSeparator:this.state.player2addSeparator},this.props.player2)]}),Object(n.jsxs)("div",{className:"refresh-wrapper",children:[this.props.ish2h?Object(n.jsx)("button",{onClick:this.backToLeague,className:"refresh back",children:"Go back"}):null,Object(n.jsx)("button",{onClick:this.refresh,className:"refresh",disabled:this.state.isLoading,children:"Refresh"})]})]})}}]),a}(s.Component),Y=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={isLoading:!1},n.openMatch=n.openMatch.bind(Object(b.a)(n)),n.refreshAll=n.refreshAll.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"openMatch",value:function(e,t){this.props.openMatch(e,t)}},{key:"refreshAll",value:function(e){this.props.refreshAll()}},{key:"render",value:function(){var e=this;if(this.props.matches&&this.props.matches.length>0){var t=this.props.matches.map((function(t){return Object(n.jsxs)("div",{className:"match-row"+(e.props.playerId===t.entry_1_entry||e.props.playerId===t.entry_2_entry?" own-match":""),onClick:function(){return e.openMatch(t.entry_1_entry,t.entry_2_entry)},children:[Object(n.jsxs)("span",{className:"match-player text-right pr10",children:[Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_1_name}),Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_1_player_name})]}),Object(n.jsx)("span",{className:"points-small pr5",children:t.entry_1_points}),Object(n.jsx)("span",{className:"points-small pl5",children:t.entry_2_points}),Object(n.jsxs)("span",{className:"match-player text-left pl10",children:[Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_2_name}),Object(n.jsx)("div",{className:"text-ellipsis",children:t.entry_2_player_name})]})]},t.id)}));return Object(n.jsxs)("div",{children:[t,Object(n.jsx)("div",{className:"refresh-wrapper",children:this.props.inProgress?Object(n.jsx)("button",{onClick:this.refreshAll,className:"refresh",disabled:this.state.isLoading,children:"Refresh all"}):null})]})}return null}}]),a}(s.Component),$=function(e){Object(d.a)(a,e);var t=Object(f.a)(a);function a(e){var n;return Object(h.a)(this,a),(n=t.call(this,e)).state={value:e.currentEvent},n.handleChange=n.handleChange.bind(Object(b.a)(n)),n}return Object(p.a)(a,[{key:"handleChange",value:function(e){this.setState({value:e.target.value}),this.props.onChange(+e.target.value)}},{key:"render",value:function(){for(var e=Array(38),t=0;t\r\n \r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EntryForm;","function PlayerName(props) {\r\n return (\r\n
\r\n {props.value}\r\n \r\n
\r\n ); \r\n}\r\n\r\nexport default PlayerName;","function LeagueGroup(props) {\r\n if (props.leagues && props.leagues.length > 0) {\r\n const options = props.leagues.map(le => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n {options}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport default LeagueGroup;","import React, { Component } from 'react';\r\nimport LeagueGroup from './LeagueGroup';\r\n\r\nclass LeagueSelect extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {id: -1, value: \"Select a League\", leagues: props.leagues};\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n \r\n handleChange(event) { \r\n const index = event.target.selectedIndex;\r\n const optionElement = event.target[index];\r\n const leagueId = optionElement.getAttribute('league-id');\r\n this.setState({id: leagueId, value: event.target.value}); \r\n\r\n const allLeagues = [ ...this.state.leagues.classic, ...this.state.leagues.h2h ];\r\n const league = allLeagues.find(el => el.id === +leagueId);\r\n this.props.onChange(league);\r\n }\r\n \r\n render() {\r\n const classicLeagues = this.state.leagues.classic && this.state.leagues.classic.filter(le => le.league_type === 'x');\r\n const h2hLeagues = this.state.leagues.h2h;\r\n const globalLeagues = this.state.leagues.classic.filter(le => le.league_type === 's');\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeagueSelect;","import React, { Component } from 'react';\r\n\r\nclass PlayerSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {value: this.props.playerId ?? \"Select a player\"};\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(event) {\r\n this.setState({value: +event.target.value});\r\n this.props.onChange(+event.target.value);\r\n }\r\n\r\n render() {\r\n let players = this.props.rankings.map(pla => (\r\n \r\n ));\r\n \r\n return (\r\n \r\n ); \r\n } \r\n}\r\n\r\nexport default PlayerSelector;","function PlayerPoints(props) {\r\n return (\r\n
\r\n \r\n {props.points}\r\n \r\n {props.minusPoints < 0 && \r\n \r\n ({props.minusPoints})\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default PlayerPoints;","function PlayerPicks(props) {\r\n const captainSvg = ();\r\n const viceCaptainSvg = ();\r\n const rightIconSvg = ();\r\n const leftIconSvg = ();\r\n\r\n let picks = props.picks.map(pick => (\r\n
  • \r\n \r\n \r\n {pick.name}\r\n \r\n {pick.isCaptain ? {captainSvg} : null}\r\n {pick.isViceCaptain ? {viceCaptainSvg} : null}\r\n \r\n {pick.hasMatch ? (!pick.canPlay ? 'x' : (pick.hasMatchStarted ? pick.points : pick.opposingTeam)) : '-'}\r\n \r\n {pick.goesOut ? {rightIconSvg} : null}\r\n {pick.goesIn ? {leftIconSvg} : null}\r\n
  • \r\n ));\r\n\r\n return (\r\n
    \r\n
      \r\n {picks}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default PlayerPicks;","import React, { Component } from 'react';\r\nimport PlayerSelector from './PlayerSelector';\r\nimport PlayerPoints from './PlayerPoints';\r\nimport PlayerPicks from './PlayerPicks';\r\n\r\nclass PlayerInfo extends Component { \r\n handlePlayerChange(playerId) {\r\n this.props.handlePlayerChange(playerId);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.rankings && \r\n this.handlePlayerChange(pi)} />} \r\n \r\n {this.props.playersToRender && \r\n } \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default PlayerInfo;","const proxyUrl = 'https://cryptic-plains-87247.herokuapp.com/';\r\nconst apiBaseUrl = 'https://fantasy.premierleague.com/api';\r\nconst url = `${proxyUrl}${apiBaseUrl}`;\r\n\r\nexport async function getEntryById(id) {\r\n return fetch(`${url}/entry/${id}/`)\r\n .then(response => {\r\n if (!response.ok) {\r\n return Promise.reject(response);\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n data.isSuccess = true;\r\n return data;\r\n })\r\n .catch(error => {\r\n error.json().then((body) => {\r\n return {\r\n isSuccess: false,\r\n error: body\r\n };\r\n }); \r\n });\r\n}\r\n\r\nexport async function getLeagueData(leagueId, isH2hLeague, currentEvent) {\r\n const standingsUrlStart = isH2hLeague ? '/leagues-h2h/' : '/leagues-classic/';\r\n const standingsUrl = `${url}${standingsUrlStart}${leagueId}/standings/`;\r\n\r\n return fetch(standingsUrl)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (isH2hLeague) {\r\n const matchesUrl = `${url}/leagues-h2h-matches/league/${leagueId}/?page=1&event=${currentEvent}`;\r\n return fetch(matchesUrl)\r\n .then(response => response.json())\r\n .then(matchesData => {\r\n return {rankings: data.standings.results, matches: matchesData.results};\r\n });\r\n } else {\r\n return {rankings: data.standings.results, matches: null};\r\n } \r\n });\r\n}\r\n\r\nexport async function getPlayersAndTeams() {\r\n return fetch(`${url}/bootstrap-static/`)\r\n .then(response => response.json())\r\n .then(data => {\r\n return {footballPlayers: data.elements, teams: data.teams};\r\n });\r\n}\r\n\r\nexport async function getGameweekFootballersData(gameweek) {\r\n return fetch(`${url}/event/${gameweek}/live/`)\r\n .then(response => response.json())\r\n .then(liveData => {\r\n return {liveStats: liveData.elements};\r\n }); \r\n}\r\n\r\nexport async function getGameweekFixturesData(gameweek) {\r\n return fetch(`${url}/fixtures/?event=${gameweek}`)\r\n .then(response2 => response2.json())\r\n .then(data => {\r\n return {fixtures: data};\r\n });\r\n}\r\n\r\nexport async function getPlayerPicksForEvent(playerId, event) {\r\n return fetch(`${url}/entry/${playerId}/event/${event}/picks/`)\r\n .then(response => response.json())\r\n .then(data => {\r\n return data;\r\n });\r\n}","import * as FantasyAPI from './FantasyAPI';\r\n\r\nexport async function GetPicksData(name, playerId, event, footballPlayers, teams, liveStats, fixtures) {\r\n let data = await FantasyAPI.getPlayerPicksForEvent(playerId, event);\r\n let playingTeams = fixtures.map(f => f.team_h).concat(fixtures.map(f => f.team_a));\r\n let transferCosts = data.entry_history.event_transfers_cost;\r\n let isBenchBoostActive = data.active_chip && data.active_chip === 'bboost';\r\n let isTripleCaptainActive = data.active_chip && data.active_chip === '3xc';\r\n let isThereAutomaticSubs = data.automatic_subs && data.automatic_subs.length > 0;\r\n let currentMatchesBonus = getCurrentMatchesBonus(fixtures);\r\n\r\n let playersToRender = data.picks.map(pick => {\r\n let actualPlayer = footballPlayers.find(pl => pl.id === pick.element);\r\n let actualStat = liveStats.find(pl => pl.id === pick.element);\r\n \r\n let decoratedPick = {\r\n id: pick.element, \r\n teamId: actualPlayer.team,\r\n name: actualPlayer.web_name, \r\n points: actualStat.stats.total_points,\r\n minutes: actualStat.stats.minutes,\r\n bonus: actualStat.stats.bonus,\r\n hasMatch: playingTeams.includes(actualPlayer.team),\r\n hasMatchStarted: fixtures.some(fi => fi.started && (fi.team_h === actualPlayer.team || fi.team_a === actualPlayer.team)),\r\n opposingTeam: getOpposingTeamName(fixtures, teams, actualPlayer.team),\r\n canPlay: null,\r\n hasPlayed: actualStat.stats.minutes > 0 || actualStat.stats.yellow_cards > 0 || actualStat.stats.red_cards > 0,\r\n goesIn: null,\r\n goesOut: null,\r\n isReserve: null,\r\n isCaptain: pick.is_captain,\r\n isViceCaptain: pick.is_vice_captain,\r\n isTripleCaptainActive: isTripleCaptainActive,\r\n multiplier: pick.multiplier,\r\n position: pick.position,\r\n type: actualPlayer.element_type, // 1- G, 2 - D, 3 - M, 4 - F\r\n chance: actualPlayer.chance_of_playing_this_round ?? 100\r\n };\r\n\r\n decoratedPick.canPlay = canPickPlay(decoratedPick, fixtures);\r\n\r\n let bonus = currentMatchesBonus.find(el => el.element === decoratedPick.id);\r\n if (bonus) {\r\n decoratedPick.bonus += bonus.points;\r\n decoratedPick.points += bonus.points;\r\n }\r\n\r\n return decoratedPick;\r\n });\r\n\r\n if (!isBenchBoostActive) {\r\n setReserves(playersToRender, 11);\r\n\r\n if (isThereAutomaticSubs) {\r\n showAutomaticSubstitudes(playersToRender, data.automatic_subs);\r\n } else {\r\n makeSubstitudes(playersToRender);\r\n }\r\n }\r\n\r\n const captain = playersToRender.find(pl => pl.isCaptain);\r\n const multiplier = isTripleCaptainActive ? 3 : 2;\r\n playersToRender.map(pl => pl.points = getPickPoints(pl, captain.canPlay, multiplier));\r\n\r\n const totalPoints = getTotalPoints(playersToRender) - transferCosts;\r\n\r\n let result = {\r\n [`${name}picks`]: data.picks,\r\n [`${name}addSeparator`]: !isBenchBoostActive,\r\n [`${name}totalPoints`]: totalPoints,\r\n [`${name}minusPoints`]: -transferCosts,\r\n [`${name}playersToRender`]: playersToRender\r\n };\r\n \r\n return result;\r\n}\r\n\r\nfunction getCurrentMatchesBonus(fixtures) {\r\n let matchesWithoutBonus = fixtures.filter(fi => fi.started && \r\n fi.stats.find(st => st.identifier === 'bonus').h.length === 0 && \r\n fi.stats.find(st => st.identifier === 'bonus').a.length === 0);\r\n let bonuses = matchesWithoutBonus.map(fi => {\r\n let allBonuses = [...fi.stats.find(st => st.identifier === 'bps').h, ...fi.stats.find(st => st.identifier === 'bps').a];\r\n allBonuses.sort(function (a, b) {\r\n return b.value - a.value;\r\n });\r\n\r\n let points = 3;\r\n allBonuses[0].points = points;\r\n let playersWithBonus3 = 1;\r\n let playersWithBonus = 1;\r\n let result = [allBonuses[0]];\r\n for (let i = 1; i < allBonuses.length; i++) {\r\n if (allBonuses[i].value === allBonuses[i-1].value) {\r\n allBonuses[i].points = points;\r\n if (points === 3) {\r\n playersWithBonus3++;\r\n }\r\n playersWithBonus++;\r\n result.push(allBonuses[i]);\r\n } else {\r\n if (playersWithBonus >= 3) {\r\n break;\r\n } \r\n if (playersWithBonus3 > 1) {\r\n points = 1;\r\n } else {\r\n points--;\r\n }\r\n allBonuses[i].points = points;\r\n playersWithBonus++;\r\n result.push(allBonuses[i]);\r\n }\r\n }\r\n\r\n return result;\r\n }); \r\n \r\n let concatArrays = (...bonuses) => {\r\n const res = bonuses.reduce((acc, val) => {\r\n return acc.concat(...val);\r\n }, []);\r\n return res;\r\n };\r\n let result = concatArrays(bonuses);\r\n \r\n return result;\r\n}\r\n\r\nfunction getOpposingTeamName(fixtures, teams, teamId) {\r\n let match = fixtures.find(fi => fi.team_h === teamId || fi.team_a === teamId);\r\n\r\n if (match) {\r\n let opposingTeamId = '';\r\n if (match.team_h === teamId) {\r\n opposingTeamId = match.team_a;\r\n } else {\r\n opposingTeamId = match.team_h;\r\n }\r\n\r\n return teams.find(t => t.id === opposingTeamId).short_name;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nfunction canPickPlay(decoratedPick, fixtures) {\r\n const pickHasMatch = decoratedPick.hasMatch;\r\n let canPlay = pickHasMatch;\r\n\r\n if (pickHasMatch) {\r\n let matches = fixtures.filter(fi => fi.team_h === decoratedPick.teamId || fi.team_a === decoratedPick.teamId);\r\n let areAllFinished = !matches.some(m => m.finished_provisional === false);\r\n\r\n if (areAllFinished) {\r\n canPlay = decoratedPick.hasPlayed;\r\n }\r\n }\r\n\r\n return canPlay;\r\n}\r\n\r\nfunction setReserves(playersToRender, playersToTake) { \r\n for (let i = playersToTake; i < playersToRender.length; i++) {\r\n playersToRender[i].isReserve = true; \r\n }\r\n}\r\n\r\nfunction showAutomaticSubstitudes(playersToRender, autoSubs) {\r\n for (let i = 0; i < autoSubs.length; i++) {\r\n const sub = autoSubs[i];\r\n let playerIn = playersToRender.find(pl => pl.id === sub.element_in);\r\n playerIn.goesIn = true;\r\n let playerOut = playersToRender.find(pl => pl.id === sub.element_out);\r\n playerOut.goesOut = true;\r\n }\r\n}\r\n\r\nfunction makeSubstitudes(playersToRender) {\r\n let goalkeeper = playersToRender.find(pl => pl.position === 1);\r\n if (!goalkeeper.canPlay) {\r\n let reserveGoalkeeper = playersToRender.find(pl => pl.position === 12);\r\n if (reserveGoalkeeper.hasPlayed) {\r\n goalkeeper.goesOut = true;\r\n reserveGoalkeeper.goesIn = true;\r\n }\r\n }\r\n\r\n let notPlayingTitulars = playersToRender.filter(pl => pl.position > 1 && !pl.isReserve && (!pl.hasMatch || !pl.canPlay));\r\n let reserves = playersToRender.filter(pl => pl.position > 12 && pl.canPlay);\r\n\r\n for (let i = 0; i < notPlayingTitulars.length; i++) {\r\n let titular = notPlayingTitulars[i];\r\n for (let j = 0; j < reserves.length; j++) {\r\n let reserve = reserves[j];\r\n if (!reserve.goesIn && canChangePlayer(playersToRender, titular.type, reserve.type)) {\r\n if (reserve.hasPlayed) {\r\n titular.goesOut = true;\r\n reserve.goesIn = true;\r\n break;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction canChangePlayer(playersToRender, titularType, reserveType) {\r\n if (titularType === reserveType || titularType === 3) {\r\n return true;\r\n } \r\n \r\n let currentPlayers = playersToRender.filter(pl => (!pl.isReserve && !pl.goesOut) || (pl.isReserve && pl.goesOut));\r\n let remainingFromType = currentPlayers.filter(pl => pl.type === titularType).length;\r\n\r\n if (titularType === 2 && remainingFromType <= 3) {\r\n return false;\r\n }\r\n\r\n if (titularType === 4 && remainingFromType <= 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getPickPoints(pick, canCaptainPlay, captainMultiplier) {\r\n if (pick.isCaptain && canCaptainPlay) {\r\n return pick.points * pick.multiplier;\r\n } else if (pick.isViceCaptain && pick.hasMatch && !canCaptainPlay) {\r\n return pick.points * captainMultiplier;\r\n } else {\r\n return pick.points;\r\n }\r\n}\r\n\r\nfunction getTotalPoints(playersToRender) {\r\n return playersToRender\r\n .filter(pl => (!pl.isReserve && !pl.goesOut) || (pl.isReserve && pl.goesIn))\r\n .reduce((acc, curr) => acc + curr.points, 0);\r\n}","import React, { Component } from 'react';\r\nimport PlayerInfo from './PlayerInfo';\r\nimport * as PointsCalculator from './PointsCalculator';\r\n\r\nclass PlayersDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n player1picks: null, \r\n player2picks: null, \r\n player1totalPoints: 0,\r\n player2totalPoints: 0,\r\n player1minusPoints: null,\r\n player2minusPoints: null,\r\n player1playersToRender: null,\r\n player2playersToRender: null,\r\n player1addSeparator: true,\r\n player2addSeparator: true\r\n };\r\n\r\n this.refresh = this.refresh.bind(this);\r\n this.backToLeague = this.backToLeague.bind(this);\r\n }\r\n\r\n refresh(event) {\r\n this.props.refresh();\r\n }\r\n\r\n backToLeague(event) {\r\n this.props.backToLeague();\r\n }\r\n\r\n showLoader() {\r\n this.setState({isLoading: true});\r\n this.props.showLoader();\r\n }\r\n\r\n hideLoader() {\r\n this.setState({isLoading: false});\r\n this.props.hideLoader();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.currentGameweek >= this.props.gameweek) { \r\n if (this.props.player1) {\r\n this.fillPlayerPicksForEvent('player1', this.props.player1, this.props.gameweek);\r\n }\r\n\r\n if (this.props.player2) {\r\n this.fillPlayerPicksForEvent('player2', this.props.player2, this.props.gameweek);\r\n }\r\n }\r\n }\r\n\r\n handlePlayerChange(name, playerId) {\r\n this.props.handlePlayerChange(name, playerId);\r\n }\r\n\r\n async fillPlayerPicksForEvent(name, playerId, event) {\r\n this.showLoader();\r\n\r\n if (this.props.footballPlayers && this.props.teams && this.props.liveStats && this.props.fixtures) {\r\n let data = await PointsCalculator.GetPicksData(\r\n name, playerId, event, this.props.footballPlayers, this.props.teams, this.props.liveStats, this.props.fixtures);\r\n this.setState(data);\r\n }\r\n\r\n this.hideLoader();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {this.props.rankings && \r\n this.handlePlayerChange('player1', pi)}\r\n addSeparator={this.state.player1addSeparator} />}\r\n {this.props.rankings && \r\n this.handlePlayerChange('player2', pi)}\r\n addSeparator={this.state.player2addSeparator} />}\r\n
    \r\n
    \r\n {this.props.ish2h ?\r\n : null}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default PlayersDetails;","import { Component } from \"react\";\r\n\r\nclass MatchesDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false\r\n }\r\n\r\n this.openMatch = this.openMatch.bind(this);\r\n this.refreshAll = this.refreshAll.bind(this);\r\n }\r\n\r\n openMatch(player1Id, player2Id) {\r\n this.props.openMatch(player1Id, player2Id);\r\n }\r\n\r\n refreshAll(event) {\r\n this.props.refreshAll();\r\n }\r\n\r\n render() {\r\n if (this.props.matches && this.props.matches.length > 0) {\r\n const allMatches = this.props.matches.map(m => (\r\n
    this.openMatch(m.entry_1_entry, m.entry_2_entry)}>\r\n \r\n
    {m.entry_1_name}
    \r\n
    {m.entry_1_player_name}
    \r\n
    \r\n {m.entry_1_points}\r\n {m.entry_2_points}\r\n \r\n
    {m.entry_2_name}
    \r\n
    {m.entry_2_player_name}
    \r\n
    \r\n
    \r\n ));\r\n\r\n return (\r\n
    \r\n {allMatches}\r\n
    \r\n {this.props.inProgress ? \r\n : null}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return null;\r\n }}\r\n}\r\n\r\nexport default MatchesDetails;","import React, { Component } from 'react';\r\n\r\nclass GameWeekSelect extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {value: props.currentEvent};\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n \r\n handleChange(event) { \r\n this.setState({value: event.target.value}); \r\n \r\n this.props.onChange(+event.target.value);\r\n }\r\n \r\n render() {\r\n let gameweeks = Array(38);\r\n for (let i = 0; i < gameweeks.length; i++) {\r\n gameweeks[i] = {name: `GW ${i+1}${this.props.currentEvent === i+1 ? \" - current\" : \"\"}`, value: i+1}; \r\n }\r\n\r\n const options = gameweeks.map(gw => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default GameWeekSelect;","import React, { Component } from 'react';\r\nimport Loader from \"react-loader-spinner\";\r\n\r\nimport EntryForm from './EntryForm';\r\nimport PlayerName from './PlayerName';\r\nimport LeagueSelect from './LeagueSelect';\r\nimport PlayersDetails from './PlayersDetails';\r\nimport MatchesDetails from './MatchesDetails';\r\nimport GameWeekSelect from './GameWeekSelect';\r\nimport * as FantasyAPI from './FantasyAPI';\r\nimport * as PointsCalculator from './PointsCalculator';\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const queryParams = new URLSearchParams(window.location.search);\r\n let playerId = parseInt(queryParams.get('id'));\r\n\r\n if (playerId) {\r\n localStorage.setItem(\"PlayerId\", playerId);\r\n } else {\r\n playerId = localStorage.getItem(\"PlayerId\"); \r\n if (playerId) {\r\n queryParams.set('id', playerId); \r\n window.location.search = queryParams.toString();\r\n } \r\n }\r\n\r\n this.state = {\r\n isLoading: false,\r\n playerId: playerId,\r\n playerName: null, \r\n playerInfo: null, \r\n currentGameweek: null,\r\n gameweek: null, \r\n leagues: null, \r\n selectedLeague: null, \r\n rankings: null,\r\n matches: null,\r\n showMatches: false,\r\n footballPlayers: null,\r\n teams: null,\r\n liveStats: null,\r\n fixtures: null,\r\n player1: playerId,\r\n player2: null,\r\n inProgress: null\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.state.playerId) {\r\n this.handlePlayerId(this.state.playerId);\r\n }\r\n\r\n let data = await FantasyAPI.getPlayersAndTeams();\r\n this.setState(data);\r\n }\r\n\r\n async handlePlayerId(id) {\r\n this.showLoader();\r\n localStorage.setItem(\"PlayerId\", id);\r\n\r\n let entryData = await FantasyAPI.getEntryById(id);\r\n this.handlePlayerInfo(entryData);\r\n \r\n this.hideLoader(entryData);\r\n }\r\n\r\n handlePlayerInfo(data) { \r\n let playerName;\r\n\r\n if (data.isSuccess) {\r\n playerName = `${data.name}, ${data.player_first_name} ${data.player_last_name}`\r\n } else {\r\n playerName = data.error;\r\n }\r\n\r\n this.setState({\r\n playerId: data.id,\r\n playerName: playerName, \r\n playerInfo: data, \r\n currentGameweek: data.current_event,\r\n gameweek: data.current_event,\r\n leagues: data.leagues,\r\n player1: data.id\r\n });\r\n\r\n this.handleGameWeekChange(this.state.gameweek);\r\n }\r\n\r\n handlePlayerReset() {\r\n this.setState({playerId: null, playerName: null, playerInfo: null, leagues: null});\r\n }\r\n\r\n async handleLeagueChange(league) {\r\n this.showLoader();\r\n league.ish2h = league.scoring === 'h';\r\n this.setState({selectedLeague: league});\r\n\r\n let leagueData = await FantasyAPI.getLeagueData(league.id, league.ish2h, this.state.gameweek);\r\n\r\n if (league.ish2h && leagueData.matches) {\r\n let inProgress = leagueData.matches[0].entry_1_total === 0 && leagueData.matches[0].entry_2_total === 0;\r\n this.setState({inProgress: inProgress, showMatches: true});\r\n\r\n if (inProgress && this.state.currentGameweek === this.state.gameweek) {\r\n for (let i = 0; i < leagueData.matches.length; i++) {\r\n let m = leagueData.matches[i];\r\n \r\n let player1Data = await PointsCalculator.GetPicksData(\r\n m.entry_1_entry, m.entry_1_entry, this.state.gameweek, this.state.footballPlayers, this.state.teams, this.state.liveStats, this.state.fixtures);\r\n let player1TotalPoints = player1Data[`${m.entry_1_entry}totalPoints`];\r\n m.entry_1_points = player1TotalPoints;\r\n\r\n let player2Data = await PointsCalculator.GetPicksData(\r\n m.entry_2_entry, m.entry_2_entry, this.state.gameweek, this.state.footballPlayers, this.state.teams, this.state.liveStats, this.state.fixtures);\r\n let player2TotalPoints = player2Data[`${m.entry_2_entry}totalPoints`];\r\n m.entry_2_points = player2TotalPoints;\r\n }\r\n }\r\n } else {\r\n this.setState({showMatches: false});\r\n }\r\n\r\n this.setState(leagueData);\r\n this.setState({player1: this.state.playerId, player2: null});\r\n\r\n this.hideLoader();\r\n }\r\n\r\n async handleGameWeekChange(gameweek) {\r\n this.showLoader();\r\n\r\n let footballersData = await FantasyAPI.getGameweekFootballersData(gameweek);\r\n let fixturesData = await FantasyAPI.getGameweekFixturesData(gameweek);\r\n this.setState(footballersData);\r\n this.setState(fixturesData);\r\n this.setState({gameweek: gameweek});\r\n\r\n if (this.state.selectedLeague?.ish2h && this.state.showMatches) {\r\n this.handleLeagueChange(this.state.selectedLeague)\r\n }\r\n\r\n this.hideLoader();\r\n }\r\n \r\n handlePlayerChange(name, playerId) {\r\n this.setState({[`${name}`]: playerId});\r\n }\r\n\r\n openMatch(player1Id, player2Id) {\r\n this.setState({player1: player1Id, player2: player2Id, showMatches: false});\r\n }\r\n\r\n backToLeague() {\r\n this.setState({showMatches: true});\r\n }\r\n\r\n refresh() {\r\n this.handleGameWeekChange(this.state.gameweek);\r\n }\r\n\r\n refreshAll() {\r\n this.handleLeagueChange(this.state.selectedLeague);\r\n }\r\n\r\n showLoader() {\r\n this.setState({isLoading: true});\r\n }\r\n\r\n hideLoader() {\r\n this.setState({isLoading: false});\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n {!this.state.selectedLeague &&\r\n
    v.1.20
    }\r\n {!this.state.playerId && }\r\n {this.state.playerId && this.state.playerName && \r\n this.handlePlayerReset()} />}\r\n {this.state.playerId && this.state.leagues && \r\n this.handleLeagueChange(d)} />}\r\n {this.state.gameweek && this.state.rankings &&\r\n this.handleGameWeekChange(d)} />}\r\n {this.state.matches && this.state.showMatches &&\r\n this.openMatch(p1,p2)}\r\n refreshAll={() => this.refreshAll()} />}\r\n {this.state.playerId && this.state.gameweek && \r\n this.state.liveStats && this.state.fixtures &&\r\n this.state.rankings && !this.state.showMatches &&\r\n this.showLoader()}\r\n hideLoader={() => this.hideLoader()}\r\n backToLeague={() => this.backToLeague()}\r\n refresh={() => this.refresh()}\r\n handlePlayerChange={(n,id) => this.handlePlayerChange(n,id)} />} \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default App;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './assets/index.css';\r\nimport \"react-loader-spinner/dist/loader/css/react-spinner-loader.css\";\r\nimport App from './App';\r\n \r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["EntryForm.js","PlayerName.js","LeagueGroup.js","LeagueSelect.js","PlayerSelector.js","PlayerPoints.js","PlayerPicks.js","PlayerInfo.js","FantasyAPI.js","PointsCalculator.js","PlayersDetails.js","MatchesDetails.js","GameWeekSelect.js","App.js","index.js"],"names":["EntryForm","props","state","value","handleChange","bind","handleSubmit","event","this","setState","target","queryParams","URLSearchParams","window","location","search","set","toString","preventDefault","onSubmit","type","placeholder","onChange","className","Component","PlayerName","onClick","LeagueGroup","leagues","length","options","map","le","league-id","id","name","entry_rank","label","title","LeagueSelect","index","selectedIndex","leagueId","getAttribute","league","classic","h2h","find","el","classicLeagues","filter","league_type","h2hLeagues","globalLeagues","disabled","hidden","PlayerSelector","playerId","players","rankings","pla","entry","points_for","entry_name","total","matches_won","matches_drawn","matches_lost","event_total","rank_sort","PlayerPoints","points","minusPoints","PlayerPicks","captainSvg","viewBox","cx","cy","r","d","fill","viceCaptainSvg","transform","rightIconSvg","x","y","enableBackground","leftIconSvg","picks","pick","addSeparator","position","isReserve","chance","isCaptain","isTripleCaptainActive","isViceCaptain","hasMatch","canPlay","hasMatchStarted","opposingTeam","goesOut","goesIn","PlayerInfo","handlePlayerChange","pi","totalPoints","playersToRender","url","getEntryById","a","fetch","then","response","ok","json","Promise","reject","data","isSuccess","catch","error","body","getLeagueData","isH2hLeague","currentEvent","standingsUrlStart","standingsUrl","matchesUrl","matchesData","standings","results","matches","getPlayersAndTeams","footballPlayers","elements","teams","getGameweekFootballersData","gameweek","liveData","liveStats","getGameweekFixturesData","response2","fixtures","getPlayerPicksForEvent","GetPicksData","FantasyAPI","playingTeams","f","team_h","concat","team_a","transferCosts","entry_history","event_transfers_cost","isBenchBoostActive","active_chip","isThereAutomaticSubs","automatic_subs","currentMatchesBonus","getCurrentMatchesBonus","actualPlayer","pl","element","actualStat","decoratedPick","teamId","team","web_name","stats","total_points","minutes","bonus","includes","some","fi","started","getOpposingTeamName","hasPlayed","yellow_cards","red_cards","is_captain","is_vice_captain","multiplier","element_type","chance_of_playing_this_round","canPickPlay","setReserves","showAutomaticSubstitudes","makeSubstitudes","captain","getPickPoints","getTotalPoints","result","bonuses","res","reduce","acc","val","concatArrays","st","identifier","h","allBonuses","sort","b","playersWithBonus3","playersWithBonus","i","push","match","opposingTeamId","t","short_name","pickHasMatch","m","finished_provisional","playersToTake","autoSubs","sub","element_in","element_out","goalkeeper","reserveGoalkeeper","notPlayingTitulars","reserves","titular","j","reserve","canChangePlayer","titularType","reserveType","remainingFromType","canCaptainPlay","captainMultiplier","curr","PlayersDetails","isLoading","player1picks","player2picks","player1totalPoints","player2totalPoints","player1minusPoints","player2minusPoints","player1playersToRender","player2playersToRender","player1addSeparator","player2addSeparator","refresh","backToLeague","showLoader","hideLoader","currentGameweek","player1","fillPlayerPicksForEvent","player2","PointsCalculator","ish2h","MatchesDetails","openMatch","refreshAll","player1Id","player2Id","allMatches","entry_1_entry","entry_2_entry","entry_1_name","entry_1_player_name","entry_1_points","entry_2_points","entry_2_name","entry_2_player_name","inProgress","GameWeekSelect","gameweeks","Array","gw","App","parseInt","get","localStorage","setItem","getItem","playerName","playerInfo","selectedLeague","showMatches","handlePlayerId","entryData","handlePlayerInfo","player_first_name","player_last_name","current_event","handleGameWeekChange","scoring","leagueData","entry_1_total","entry_2_total","player1Data","player1TotalPoints","player2Data","player2TotalPoints","footballersData","fixturesData","handleLeagueChange","color","height","width","visible","handlePlayerReset","p1","p2","n","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.01bf8c02.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\n\r\nclass EntryForm extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {value: ''};\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n \r\n handleChange(event) { \r\n this.setState({value: event.target.value}); \r\n }\r\n\r\n handleSubmit(event) {\r\n const queryParams = new URLSearchParams(window.location.search);\r\n queryParams.set('id', this.state.value);\r\n window.location.search = queryParams.toString();\r\n\r\n event.preventDefault();\r\n }\r\n \r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default EntryForm;","function PlayerName(props) {\r\n return (\r\n
    \r\n {props.value}\r\n \r\n
    \r\n ); \r\n}\r\n\r\nexport default PlayerName;","function LeagueGroup(props) {\r\n if (props.leagues && props.leagues.length > 0) {\r\n const options = props.leagues.map(le => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n {options}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport default LeagueGroup;","import React, { Component } from 'react';\r\nimport LeagueGroup from './LeagueGroup';\r\n\r\nclass LeagueSelect extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {id: -1, value: \"Select a League\", leagues: props.leagues};\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n \r\n handleChange(event) { \r\n const index = event.target.selectedIndex;\r\n const optionElement = event.target[index];\r\n const leagueId = optionElement.getAttribute('league-id');\r\n this.setState({id: leagueId, value: event.target.value}); \r\n\r\n const allLeagues = [ ...this.state.leagues.classic, ...this.state.leagues.h2h ];\r\n const league = allLeagues.find(el => el.id === +leagueId);\r\n this.props.onChange(league);\r\n }\r\n \r\n render() {\r\n const classicLeagues = this.state.leagues.classic && this.state.leagues.classic.filter(le => le.league_type === 'x');\r\n const h2hLeagues = this.state.leagues.h2h;\r\n const globalLeagues = this.state.leagues.classic.filter(le => le.league_type === 's');\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeagueSelect;","import React, { Component } from 'react';\r\n\r\nclass PlayerSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {value: this.props.playerId ?? \"Select a player\"};\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(event) {\r\n this.setState({value: +event.target.value});\r\n this.props.onChange(+event.target.value);\r\n }\r\n\r\n render() {\r\n let players = this.props.rankings.map(pla => (\r\n \r\n ));\r\n \r\n return (\r\n \r\n ); \r\n } \r\n}\r\n\r\nexport default PlayerSelector;","function PlayerPoints(props) {\r\n return (\r\n
    \r\n \r\n {props.points}\r\n \r\n {props.minusPoints < 0 && \r\n \r\n ({props.minusPoints})\r\n }\r\n
    \r\n );\r\n}\r\n\r\nexport default PlayerPoints;","function PlayerPicks(props) {\r\n const captainSvg = ();\r\n const viceCaptainSvg = ();\r\n const rightIconSvg = ();\r\n const leftIconSvg = ();\r\n\r\n let picks = props.picks.map(pick => (\r\n
  • \r\n \r\n \r\n {pick.name}\r\n \r\n {pick.isCaptain ? {captainSvg} : null}\r\n {pick.isViceCaptain ? {viceCaptainSvg} : null}\r\n \r\n {pick.hasMatch ? (!pick.canPlay ? 'x' : (pick.hasMatchStarted ? pick.points : pick.opposingTeam)) : '-'}\r\n \r\n {pick.goesOut ? {rightIconSvg} : null}\r\n {pick.goesIn ? {leftIconSvg} : null}\r\n
  • \r\n ));\r\n\r\n return (\r\n
    \r\n
      \r\n {picks}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default PlayerPicks;","import React, { Component } from 'react';\r\nimport PlayerSelector from './PlayerSelector';\r\nimport PlayerPoints from './PlayerPoints';\r\nimport PlayerPicks from './PlayerPicks';\r\n\r\nclass PlayerInfo extends Component { \r\n handlePlayerChange(playerId) {\r\n this.props.handlePlayerChange(playerId);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.rankings && \r\n this.handlePlayerChange(pi)} />} \r\n \r\n {this.props.playersToRender && \r\n } \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default PlayerInfo;","const proxyUrl = 'https://cryptic-plains-87247.herokuapp.com/';\r\nconst apiBaseUrl = 'https://fantasy.premierleague.com/api';\r\nconst url = `${proxyUrl}${apiBaseUrl}`;\r\n\r\nexport async function getEntryById(id) {\r\n return fetch(`${url}/entry/${id}/`)\r\n .then(response => {\r\n if (!response.ok) {\r\n return Promise.reject(response);\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n data.isSuccess = true;\r\n return data;\r\n })\r\n .catch(error => {\r\n error.json().then((body) => {\r\n return {\r\n isSuccess: false,\r\n error: body\r\n };\r\n }); \r\n });\r\n}\r\n\r\nexport async function getLeagueData(leagueId, isH2hLeague, currentEvent) {\r\n const standingsUrlStart = isH2hLeague ? '/leagues-h2h/' : '/leagues-classic/';\r\n const standingsUrl = `${url}${standingsUrlStart}${leagueId}/standings/`;\r\n\r\n return fetch(standingsUrl)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (isH2hLeague) {\r\n const matchesUrl = `${url}/leagues-h2h-matches/league/${leagueId}/?page=1&event=${currentEvent}`;\r\n return fetch(matchesUrl)\r\n .then(response => response.json())\r\n .then(matchesData => {\r\n return {rankings: data.standings.results, matches: matchesData.results};\r\n });\r\n } else {\r\n return {rankings: data.standings.results, matches: null};\r\n } \r\n });\r\n}\r\n\r\nexport async function getPlayersAndTeams() {\r\n return fetch(`${url}/bootstrap-static/`)\r\n .then(response => response.json())\r\n .then(data => {\r\n return {footballPlayers: data.elements, teams: data.teams};\r\n });\r\n}\r\n\r\nexport async function getGameweekFootballersData(gameweek) {\r\n return fetch(`${url}/event/${gameweek}/live/`)\r\n .then(response => response.json())\r\n .then(liveData => {\r\n return {liveStats: liveData.elements};\r\n }); \r\n}\r\n\r\nexport async function getGameweekFixturesData(gameweek) {\r\n return fetch(`${url}/fixtures/?event=${gameweek}`)\r\n .then(response2 => response2.json())\r\n .then(data => {\r\n return {fixtures: data};\r\n });\r\n}\r\n\r\nexport async function getPlayerPicksForEvent(playerId, event) {\r\n return fetch(`${url}/entry/${playerId}/event/${event}/picks/`)\r\n .then(response => response.json())\r\n .then(data => {\r\n return data;\r\n });\r\n}","import * as FantasyAPI from './FantasyAPI';\r\n\r\nexport async function GetPicksData(name, playerId, event, footballPlayers, teams, liveStats, fixtures) {\r\n let data = await FantasyAPI.getPlayerPicksForEvent(playerId, event);\r\n let playingTeams = fixtures.map(f => f.team_h).concat(fixtures.map(f => f.team_a));\r\n let transferCosts = data.entry_history.event_transfers_cost;\r\n let isBenchBoostActive = data.active_chip && data.active_chip === 'bboost';\r\n let isTripleCaptainActive = data.active_chip && data.active_chip === '3xc';\r\n let isThereAutomaticSubs = data.automatic_subs && data.automatic_subs.length > 0;\r\n let currentMatchesBonus = getCurrentMatchesBonus(fixtures);\r\n\r\n let playersToRender = data.picks.map(pick => {\r\n let actualPlayer = footballPlayers.find(pl => pl.id === pick.element);\r\n let actualStat = liveStats.find(pl => pl.id === pick.element);\r\n \r\n let decoratedPick = {\r\n id: pick.element, \r\n teamId: actualPlayer.team,\r\n name: actualPlayer.web_name, \r\n points: actualStat.stats.total_points,\r\n minutes: actualStat.stats.minutes,\r\n bonus: actualStat.stats.bonus,\r\n hasMatch: playingTeams.includes(actualPlayer.team),\r\n hasMatchStarted: fixtures.some(fi => fi.started && (fi.team_h === actualPlayer.team || fi.team_a === actualPlayer.team)),\r\n opposingTeam: getOpposingTeamName(fixtures, teams, actualPlayer.team),\r\n canPlay: null,\r\n hasPlayed: actualStat.stats.minutes > 0 || actualStat.stats.yellow_cards > 0 || actualStat.stats.red_cards > 0,\r\n goesIn: null,\r\n goesOut: null,\r\n isReserve: null,\r\n isCaptain: pick.is_captain,\r\n isViceCaptain: pick.is_vice_captain,\r\n isTripleCaptainActive: isTripleCaptainActive,\r\n multiplier: pick.multiplier,\r\n position: pick.position,\r\n type: actualPlayer.element_type, // 1- G, 2 - D, 3 - M, 4 - F\r\n chance: actualPlayer.chance_of_playing_this_round ?? 100\r\n };\r\n\r\n decoratedPick.canPlay = canPickPlay(decoratedPick, fixtures);\r\n\r\n let bonus = currentMatchesBonus.find(el => el.element === decoratedPick.id);\r\n if (bonus) {\r\n decoratedPick.bonus += bonus.points;\r\n decoratedPick.points += bonus.points;\r\n }\r\n\r\n return decoratedPick;\r\n });\r\n\r\n if (!isBenchBoostActive) {\r\n setReserves(playersToRender, 11);\r\n\r\n if (isThereAutomaticSubs) {\r\n showAutomaticSubstitudes(playersToRender, data.automatic_subs);\r\n } else {\r\n makeSubstitudes(playersToRender);\r\n }\r\n }\r\n\r\n const captain = playersToRender.find(pl => pl.isCaptain);\r\n const multiplier = isTripleCaptainActive ? 3 : 2;\r\n playersToRender.map(pl => pl.points = getPickPoints(pl, captain.canPlay, multiplier));\r\n\r\n const totalPoints = getTotalPoints(playersToRender) - transferCosts;\r\n\r\n let result = {\r\n [`${name}picks`]: data.picks,\r\n [`${name}addSeparator`]: !isBenchBoostActive,\r\n [`${name}totalPoints`]: totalPoints,\r\n [`${name}minusPoints`]: -transferCosts,\r\n [`${name}playersToRender`]: playersToRender\r\n };\r\n \r\n return result;\r\n}\r\n\r\nfunction getCurrentMatchesBonus(fixtures) {\r\n let matchesWithoutBonus = fixtures.filter(fi => fi.started && \r\n fi.stats.find(st => st.identifier === 'bonus').h.length === 0 && \r\n fi.stats.find(st => st.identifier === 'bonus').a.length === 0);\r\n let bonuses = matchesWithoutBonus.map(fi => {\r\n let allBonuses = [...fi.stats.find(st => st.identifier === 'bps').h, ...fi.stats.find(st => st.identifier === 'bps').a];\r\n allBonuses.sort(function (a, b) {\r\n return b.value - a.value;\r\n });\r\n\r\n let points = 3;\r\n allBonuses[0].points = points;\r\n let playersWithBonus3 = 1;\r\n let playersWithBonus = 1;\r\n let result = [allBonuses[0]];\r\n for (let i = 1; i < allBonuses.length; i++) {\r\n if (allBonuses[i].value === allBonuses[i-1].value) {\r\n allBonuses[i].points = points;\r\n if (points === 3) {\r\n playersWithBonus3++;\r\n }\r\n playersWithBonus++;\r\n result.push(allBonuses[i]);\r\n } else {\r\n if (playersWithBonus >= 3) {\r\n break;\r\n } \r\n if (playersWithBonus3 > 1) {\r\n points = 1;\r\n } else {\r\n points--;\r\n }\r\n allBonuses[i].points = points;\r\n playersWithBonus++;\r\n result.push(allBonuses[i]);\r\n }\r\n }\r\n\r\n return result;\r\n }); \r\n \r\n let concatArrays = (...bonuses) => {\r\n const res = bonuses.reduce((acc, val) => {\r\n return acc.concat(...val);\r\n }, []);\r\n return res;\r\n };\r\n let result = concatArrays(bonuses);\r\n \r\n return result;\r\n}\r\n\r\nfunction getOpposingTeamName(fixtures, teams, teamId) {\r\n let match = fixtures.find(fi => fi.team_h === teamId || fi.team_a === teamId);\r\n\r\n if (match) {\r\n let opposingTeamId = '';\r\n if (match.team_h === teamId) {\r\n opposingTeamId = match.team_a;\r\n } else {\r\n opposingTeamId = match.team_h;\r\n }\r\n\r\n return teams.find(t => t.id === opposingTeamId).short_name;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nfunction canPickPlay(decoratedPick, fixtures) {\r\n const pickHasMatch = decoratedPick.hasMatch;\r\n let canPlay = pickHasMatch;\r\n\r\n if (pickHasMatch) {\r\n let matches = fixtures.filter(fi => fi.team_h === decoratedPick.teamId || fi.team_a === decoratedPick.teamId);\r\n let areAllFinished = !matches.some(m => m.finished_provisional === false);\r\n\r\n if (areAllFinished) {\r\n canPlay = decoratedPick.hasPlayed;\r\n }\r\n }\r\n\r\n return canPlay;\r\n}\r\n\r\nfunction setReserves(playersToRender, playersToTake) { \r\n for (let i = playersToTake; i < playersToRender.length; i++) {\r\n playersToRender[i].isReserve = true; \r\n }\r\n}\r\n\r\nfunction showAutomaticSubstitudes(playersToRender, autoSubs) {\r\n for (let i = 0; i < autoSubs.length; i++) {\r\n const sub = autoSubs[i];\r\n let playerIn = playersToRender.find(pl => pl.id === sub.element_in);\r\n playerIn.goesIn = true;\r\n let playerOut = playersToRender.find(pl => pl.id === sub.element_out);\r\n playerOut.goesOut = true;\r\n }\r\n}\r\n\r\nfunction makeSubstitudes(playersToRender) {\r\n let goalkeeper = playersToRender.find(pl => pl.position === 1);\r\n if (!goalkeeper.canPlay) {\r\n let reserveGoalkeeper = playersToRender.find(pl => pl.position === 12);\r\n if (reserveGoalkeeper.hasPlayed) {\r\n goalkeeper.goesOut = true;\r\n reserveGoalkeeper.goesIn = true;\r\n }\r\n }\r\n\r\n let notPlayingTitulars = playersToRender.filter(pl => pl.position > 1 && !pl.isReserve && (!pl.hasMatch || !pl.canPlay));\r\n let reserves = playersToRender.filter(pl => pl.position > 12 && pl.canPlay);\r\n\r\n for (let i = 0; i < notPlayingTitulars.length; i++) {\r\n let titular = notPlayingTitulars[i];\r\n for (let j = 0; j < reserves.length; j++) {\r\n let reserve = reserves[j];\r\n if (!reserve.goesIn && canChangePlayer(playersToRender, titular.type, reserve.type)) {\r\n if (reserve.hasPlayed) {\r\n titular.goesOut = true;\r\n reserve.goesIn = true;\r\n break;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction canChangePlayer(playersToRender, titularType, reserveType) {\r\n if (titularType === reserveType || titularType === 3) {\r\n return true;\r\n } \r\n \r\n let currentPlayers = playersToRender.filter(pl => (!pl.isReserve && !pl.goesOut) || (pl.isReserve && pl.goesOut));\r\n let remainingFromType = currentPlayers.filter(pl => pl.type === titularType).length;\r\n\r\n if (titularType === 2 && remainingFromType <= 3) {\r\n return false;\r\n }\r\n\r\n if (titularType === 4 && remainingFromType <= 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction getPickPoints(pick, canCaptainPlay, captainMultiplier) {\r\n if (pick.isCaptain && canCaptainPlay) {\r\n return pick.points * pick.multiplier;\r\n } else if (pick.isViceCaptain && pick.hasMatch && !canCaptainPlay) {\r\n return pick.points * captainMultiplier;\r\n } else {\r\n return pick.points;\r\n }\r\n}\r\n\r\nfunction getTotalPoints(playersToRender) {\r\n return playersToRender\r\n .filter(pl => (!pl.isReserve && !pl.goesOut) || (pl.isReserve && pl.goesIn))\r\n .reduce((acc, curr) => acc + curr.points, 0);\r\n}","import React, { Component } from 'react';\r\nimport PlayerInfo from './PlayerInfo';\r\nimport * as PointsCalculator from './PointsCalculator';\r\n\r\nclass PlayersDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n player1picks: null, \r\n player2picks: null, \r\n player1totalPoints: 0,\r\n player2totalPoints: 0,\r\n player1minusPoints: null,\r\n player2minusPoints: null,\r\n player1playersToRender: null,\r\n player2playersToRender: null,\r\n player1addSeparator: true,\r\n player2addSeparator: true\r\n };\r\n\r\n this.refresh = this.refresh.bind(this);\r\n this.backToLeague = this.backToLeague.bind(this);\r\n }\r\n\r\n refresh(event) {\r\n this.props.refresh();\r\n }\r\n\r\n backToLeague(event) {\r\n this.props.backToLeague();\r\n }\r\n\r\n showLoader() {\r\n this.setState({isLoading: true});\r\n this.props.showLoader();\r\n }\r\n\r\n hideLoader() {\r\n this.setState({isLoading: false});\r\n this.props.hideLoader();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.currentGameweek >= this.props.gameweek) { \r\n if (this.props.player1) {\r\n this.fillPlayerPicksForEvent('player1', this.props.player1, this.props.gameweek);\r\n }\r\n\r\n if (this.props.player2) {\r\n this.fillPlayerPicksForEvent('player2', this.props.player2, this.props.gameweek);\r\n }\r\n }\r\n }\r\n\r\n handlePlayerChange(name, playerId) {\r\n this.props.handlePlayerChange(name, playerId);\r\n }\r\n\r\n async fillPlayerPicksForEvent(name, playerId, event) {\r\n this.showLoader();\r\n\r\n if (this.props.footballPlayers && this.props.teams && this.props.liveStats && this.props.fixtures) {\r\n let data = await PointsCalculator.GetPicksData(\r\n name, playerId, event, this.props.footballPlayers, this.props.teams, this.props.liveStats, this.props.fixtures);\r\n this.setState(data);\r\n }\r\n\r\n this.hideLoader();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {this.props.rankings && \r\n this.handlePlayerChange('player1', pi)}\r\n addSeparator={this.state.player1addSeparator} />}\r\n {this.props.rankings && \r\n this.handlePlayerChange('player2', pi)}\r\n addSeparator={this.state.player2addSeparator} />}\r\n
    \r\n
    \r\n {this.props.ish2h ?\r\n : null}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default PlayersDetails;","import { Component } from \"react\";\r\n\r\nclass MatchesDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false\r\n }\r\n\r\n this.openMatch = this.openMatch.bind(this);\r\n this.refreshAll = this.refreshAll.bind(this);\r\n }\r\n\r\n openMatch(player1Id, player2Id) {\r\n this.props.openMatch(player1Id, player2Id);\r\n }\r\n\r\n refreshAll(event) {\r\n this.props.refreshAll();\r\n }\r\n\r\n render() {\r\n if (this.props.matches && this.props.matches.length > 0) {\r\n const allMatches = this.props.matches.map(m => (\r\n
    this.openMatch(m.entry_1_entry, m.entry_2_entry)}>\r\n \r\n
    {m.entry_1_name}
    \r\n
    {m.entry_1_player_name}
    \r\n
    \r\n {m.entry_1_points}\r\n {m.entry_2_points}\r\n \r\n
    {m.entry_2_name}
    \r\n
    {m.entry_2_player_name}
    \r\n
    \r\n
    \r\n ));\r\n\r\n return (\r\n
    \r\n {allMatches}\r\n
    \r\n {this.props.inProgress ? \r\n : null}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return null;\r\n }}\r\n}\r\n\r\nexport default MatchesDetails;","import React, { Component } from 'react';\r\n\r\nclass GameWeekSelect extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {value: props.currentEvent};\r\n \r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n \r\n handleChange(event) { \r\n this.setState({value: event.target.value}); \r\n \r\n this.props.onChange(+event.target.value);\r\n }\r\n \r\n render() {\r\n let gameweeks = Array(38);\r\n for (let i = 0; i < gameweeks.length; i++) {\r\n gameweeks[i] = {name: `GW ${i+1}${this.props.currentEvent === i+1 ? \" - current\" : \"\"}`, value: i+1}; \r\n }\r\n\r\n const options = gameweeks.map(gw => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default GameWeekSelect;","import React, { Component } from 'react';\r\nimport Loader from \"react-loader-spinner\";\r\n\r\nimport EntryForm from './EntryForm';\r\nimport PlayerName from './PlayerName';\r\nimport LeagueSelect from './LeagueSelect';\r\nimport PlayersDetails from './PlayersDetails';\r\nimport MatchesDetails from './MatchesDetails';\r\nimport GameWeekSelect from './GameWeekSelect';\r\nimport * as FantasyAPI from './FantasyAPI';\r\nimport * as PointsCalculator from './PointsCalculator';\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const queryParams = new URLSearchParams(window.location.search);\r\n let playerId = parseInt(queryParams.get('id'));\r\n\r\n if (playerId) {\r\n localStorage.setItem(\"PlayerId\", playerId);\r\n } else {\r\n playerId = localStorage.getItem(\"PlayerId\"); \r\n if (playerId) {\r\n queryParams.set('id', playerId); \r\n window.location.search = queryParams.toString();\r\n } \r\n }\r\n\r\n this.state = {\r\n isLoading: false,\r\n playerId: playerId,\r\n playerName: null, \r\n playerInfo: null, \r\n currentGameweek: null,\r\n gameweek: null, \r\n leagues: null, \r\n selectedLeague: null, \r\n rankings: null,\r\n matches: null,\r\n showMatches: false,\r\n footballPlayers: null,\r\n teams: null,\r\n liveStats: null,\r\n fixtures: null,\r\n player1: playerId,\r\n player2: null,\r\n inProgress: null\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.state.playerId) {\r\n this.handlePlayerId(this.state.playerId);\r\n }\r\n\r\n let data = await FantasyAPI.getPlayersAndTeams();\r\n this.setState(data);\r\n }\r\n\r\n async handlePlayerId(id) {\r\n this.showLoader();\r\n localStorage.setItem(\"PlayerId\", id);\r\n\r\n let entryData = await FantasyAPI.getEntryById(id);\r\n this.handlePlayerInfo(entryData);\r\n \r\n this.hideLoader(entryData);\r\n }\r\n\r\n handlePlayerInfo(data) { \r\n let playerName;\r\n\r\n if (data.isSuccess) {\r\n playerName = `${data.name}, ${data.player_first_name} ${data.player_last_name}`\r\n } else {\r\n playerName = data.error;\r\n }\r\n\r\n this.setState({\r\n playerId: data.id,\r\n playerName: playerName, \r\n playerInfo: data, \r\n currentGameweek: data.current_event,\r\n gameweek: data.current_event,\r\n leagues: data.leagues,\r\n player1: data.id\r\n });\r\n\r\n this.handleGameWeekChange(this.state.gameweek);\r\n }\r\n\r\n handlePlayerReset() {\r\n this.setState({playerId: null, playerName: null, playerInfo: null, leagues: null});\r\n }\r\n\r\n async handleLeagueChange(league) {\r\n this.showLoader();\r\n league.ish2h = league.scoring === 'h';\r\n this.setState({selectedLeague: league});\r\n\r\n let leagueData = await FantasyAPI.getLeagueData(league.id, league.ish2h, this.state.gameweek);\r\n\r\n if (league.ish2h && leagueData.matches) {\r\n let inProgress = leagueData.matches[0].entry_1_total === 0 && leagueData.matches[0].entry_2_total === 0;\r\n this.setState({inProgress: inProgress, showMatches: true});\r\n\r\n if (inProgress && this.state.currentGameweek === this.state.gameweek) {\r\n for (let i = 0; i < leagueData.matches.length; i++) {\r\n let m = leagueData.matches[i];\r\n \r\n let player1Data = await PointsCalculator.GetPicksData(\r\n m.entry_1_entry, m.entry_1_entry, this.state.gameweek, this.state.footballPlayers, this.state.teams, this.state.liveStats, this.state.fixtures);\r\n let player1TotalPoints = player1Data[`${m.entry_1_entry}totalPoints`];\r\n m.entry_1_points = player1TotalPoints;\r\n\r\n let player2Data = await PointsCalculator.GetPicksData(\r\n m.entry_2_entry, m.entry_2_entry, this.state.gameweek, this.state.footballPlayers, this.state.teams, this.state.liveStats, this.state.fixtures);\r\n let player2TotalPoints = player2Data[`${m.entry_2_entry}totalPoints`];\r\n m.entry_2_points = player2TotalPoints;\r\n }\r\n }\r\n } else {\r\n this.setState({showMatches: false});\r\n }\r\n\r\n this.setState(leagueData);\r\n this.setState({player1: this.state.playerId, player2: null});\r\n\r\n this.hideLoader();\r\n }\r\n\r\n async handleGameWeekChange(gameweek) {\r\n this.showLoader();\r\n\r\n let footballersData = await FantasyAPI.getGameweekFootballersData(gameweek);\r\n let fixturesData = await FantasyAPI.getGameweekFixturesData(gameweek);\r\n this.setState(footballersData);\r\n this.setState(fixturesData);\r\n this.setState({gameweek: gameweek});\r\n\r\n if (this.state.selectedLeague?.ish2h && this.state.showMatches) {\r\n this.handleLeagueChange(this.state.selectedLeague)\r\n }\r\n\r\n this.hideLoader();\r\n }\r\n \r\n handlePlayerChange(name, playerId) {\r\n this.setState({[`${name}`]: playerId});\r\n }\r\n\r\n openMatch(player1Id, player2Id) {\r\n this.setState({player1: player1Id, player2: player2Id, showMatches: false});\r\n }\r\n\r\n backToLeague() {\r\n this.setState({showMatches: true});\r\n }\r\n\r\n refresh() {\r\n this.handleGameWeekChange(this.state.gameweek);\r\n }\r\n\r\n refreshAll() {\r\n this.handleLeagueChange(this.state.selectedLeague);\r\n }\r\n\r\n showLoader() {\r\n this.setState({isLoading: true});\r\n }\r\n\r\n hideLoader() {\r\n this.setState({isLoading: false});\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n {!this.state.selectedLeague &&\r\n
    v.1.21
    }\r\n {!this.state.playerId && }\r\n {this.state.playerId && this.state.playerName && \r\n this.handlePlayerReset()} />}\r\n {this.state.playerId && this.state.leagues && \r\n this.handleLeagueChange(d)} />}\r\n {this.state.gameweek && this.state.rankings &&\r\n this.handleGameWeekChange(d)} />}\r\n {this.state.matches && this.state.showMatches &&\r\n this.openMatch(p1,p2)}\r\n refreshAll={() => this.refreshAll()} />}\r\n {this.state.playerId && this.state.gameweek && \r\n this.state.liveStats && this.state.fixtures &&\r\n this.state.rankings && !this.state.showMatches &&\r\n this.showLoader()}\r\n hideLoader={() => this.hideLoader()}\r\n backToLeague={() => this.backToLeague()}\r\n refresh={() => this.refresh()}\r\n handlePlayerChange={(n,id) => this.handlePlayerChange(n,id)} />} \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default App;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './assets/index.css';\r\nimport \"react-loader-spinner/dist/loader/css/react-spinner-loader.css\";\r\nimport App from './App';\r\n \r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);"],"sourceRoot":""} \ No newline at end of file