/* ============================================================ FIFA EDGE — views per section ============================================================ */ const { useState: useStateV, useMemo: useMemoV } = React; /* ---------- TODAY view ---------- */ const TodayView = ({ showEv }) => { const [leagueFilter, setLeagueFilter] = useStateV('all'); const [onlyEv, setOnlyEv] = useStateV(false); const filtered = MATCHES.filter(m => (onlyEv ? m.ev.pick !== null : true)); const evSignals = MATCHES.filter(m => m.ev.pick); return ( <>
| # | Hora | Partida | Pick | Odd | Stake | EV | Conf | Resultado | PnL |
|---|---|---|---|---|---|---|---|---|---|
| {s.id.slice(1)} | {window.fmtHM(s.ts)} | {s.match} | {s.pick} | {s.odd.toFixed(2)} | {s.stake.toFixed(1)}u | +{s.ev.toFixed(1)}% | {s.conf}% | {s.result==='win' && ● WIN} {s.result==='loss' && ● LOSS} {s.result==='void' && ● VOID} | 0 ? 'var(--win)' : s.pnl < 0 ? 'var(--loss)' : 'var(--text-3)', fontWeight: 600}}> {s.pnl > 0 ? '+':''}{s.pnl.toFixed(2)} |
| # | Player | Time base | ELO | Δ 24h | Jogos | WR | Forma (últ. 10) |
|---|---|---|---|---|---|---|---|
| {String(i+1).padStart(2,'0')} |
{p.handle.slice(0,2).toUpperCase()}
{p.handle}
|
{p.team} | {p.elo} | =0?'var(--win)':'var(--loss)'}}>{p.delta>=0?'+':''}{p.delta} | {p.games} | {(p.wr*100).toFixed(1)}% |
| W-D-L | {th('gf','Gols +', true)} {th('ga','Gols -', true)} {th('saldo','Saldo', true)} {th('wr','WR %', true)} {th('o25','Over 2.5 %', true)} {th('o35','Over 3.5 %', true)} {th('btts','BTTS %', true)} {th('avgGF','Avg GF', true)} {th('avgGA','Avg GA', true)} {th('cs','Clean sheet %', true)} {th('noGoal','Sem gols %', true)} {th('comeback','Comeback', true)}||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{r.handle.slice(0,2).toUpperCase()}
{r.handle}
|
{r.team} | {r.elo} | {r.games} | {r.w} - {r.d} - {r.l} | {r.gf} | {r.ga} | =0?'var(--win)':'var(--loss)', fontWeight:600}}>{r.saldo>=0?'+':''}{r.saldo} | {r.avgGF} | {r.avgGA} | {r.cs}% | {r.noGoal}% | {r.comeback} |