PageSourceSearch

https://bacctrack-7ha7hyw7.manus.space/assets/AdminFootballTodayPage-DIusK_k1.js

js bacctrack-7ha7hyw7.manus.space collected 2026-10-03 05:02:37 UTC 34,921 bytes, 1 lines download raw bytes

1import{u as sa,j as a,d as Q,T as ya,a9 as oa,r as n,t as B,C as Aa,J as Fa,S as ja,A as ea,B as Ta,y as Pa}from"./index-C3Qps0S4.js";import{I as na}from"./input-Dj8udylZ.js";import{S as z}from"./skeleton-Dte_fR4v.js";import{b as va,g as wa,i as G,P as ta,a as O,s as U,F as la,c as Na}from"./footballUi-63-GIEDR.js";import{F as ka,A as Ra,L as Ca,a as za,M as Ia}from"./FootballHomeComponents-BE1VZLe4.js";import{R as ia}from"./refresh-cw-DwgqC19c.js";import{G as Sa}from"./git-compare-arrows-BpXt8cnX.js";import{S as La}from"./search-DKbjFAwP.js";import{S as Ma}from"./star-B909tHoY.js";import{F as _a}from"./filter-BhwTfzsC.js";import{S as Da}from"./sliders-horizontal-8DHyQzuu.js";import{C as da}from"./calendar-days-C-4YinGr.js";import"./dialog-BY1FISUw.js";import"./index-BKUanX19.js";import"./index-Dr02_Kwf.js";function $a({date:o,records:l,isLoading:s,isRefreshing:i,hasError:d,onRefresh:g}){const[,I]=sa();return a.jsxs("section",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:25","aria-labelledby":"football-ai-ready-heading",className:"overflow-hidden rounded-2xl border border-amber-400/20 bg-[radial-gradient(circle_at_top_right,rgba(245,158,11,0.1),transparent_45%),#0b111c] p-3.5 shadow-[0_18px_45px_rgba(0,0,0,0.22)]",children:[a.jsxs("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:26",className:"flex items-start justify-between gap-3",children:[a.jsxs("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:27",className:"min-w-0",children:[a.jsx(ka,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:28"}),a.jsx("h2",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:29",id:"football-ai-ready-heading",className:"mt-1.5 text-base font-black tracking-tight text-white",children:"คู่ที่ข้อมูลพร้อมสำหรับ AI"}),a.jsxs("p",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:30",className:"mt-1 text-[10px] leading-4 text-zinc-500",children:[va(o)," · เฉพาะ Analysis ที่ Admin สร้างแบบ manual ระดับ HIGH/MEDIUM"]})]}),a.jsx("button",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:32",type:"button",onClick:g,disabled:i,"aria-label":"โหลดรายการ AI พร้อมวิเคราะห์ใหม่",className:"grid min-h-10 min-w-10 shrink-0 place-items-center rounded-xl border border-amber-400/20 bg-amber-400/[0.04] text-amber-300 transition hover:border-amber-400/40 active:scale-95 disabled:opacity-50",children:a.jsx(ia,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:33",className:`h-4 w-4 ${i?"motion-safe:animate-spin":""}`})})]}),a.jsxs("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:37",className:"mt-3 flex items-start gap-2 rounded-xl border border-sky-400/15 bg-sky-400/[0.035] p-2.5 text-[9px] leading-4 text-zinc-400",children:[a.jsx(Q,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:38",className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-sky-300"}),"เรียงตาม Data Quality, Completeness, Experimental Confidence และเวลาเริ่ม ไม่ใช่อันดับโอกาสชนะหรือ “คู่เด่น”"]}),s?a.jsx("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:43",className:"mt-3 flex snap-x gap-2 overflow-hidden",children:Array.from({length:2}).map((m,S)=>a.jsx(z,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:43",className:"h-48 min-w-[272px] rounded-2xl !bg-white/[0.045]"},S))}):d?a.jsxs("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:45",role:"alert",className:"mt-3 rounded-xl border border-red-500/20 bg-red-500/[0.05] p-4 text-center",children:[a.jsx(ya,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:46",className:"mx-auto h-6 w-6 text-red-300"}),a.jsx("p",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:47",className:"mt-2 text-[11px] font-bold text-red-200",children:"โหลด AI Ready ไม่สำเร็จ"}),a.jsx("button",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:48",type:"button",onClick:g,className:"mt-2 min-h-10 rounded-lg border border-red-400/20 px-4 text-[10px] font-bold text-red-200",children:"ลองอีกครั้ง"})]}):l.length===0?a.jsxs("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:51",className:"mt-3 rounded-xl border border-dashed border-white/10 bg-black/10 px-4 py-7 text-center",children:[a.jsx(oa,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:52",className:"mx-auto h-7 w-7 text-zinc-600"}),a.jsx("h3",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:53",className:"mt-2 text-[12px] font-black text-zinc-200",children:"ยังไม่มีคู่ที่มีข้อมูลเพียงพอสำหรับการวิเคราะห์"}),a.jsx("p",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:54",className:"mx-auto mt-1 max-w-sm text-[10px] leading-4 text-zinc-500",children:"รายการจะปรากฏหลัง Admin สร้าง Analysis แบบ manual และผ่านระดับ HIGH/MEDIUM ส่วน LOW DATA จะไม่ถูกนำมาแสดง"})]}):a.jsx("div",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:57",className:"mt-3 flex snap-x snap-mandatory gap-2.5 overflow-x-auto pb-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:l.map(m=>a.jsx(Ra,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:59",record:m,onOpen:()=>I(`/admin/football-match/${m.fixture.fixtureId}?tab=ai`)},`${m.fixture.fixtureId}-${m.audit.dataVersion}`))}),a.jsxs("p",{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:64",className:"mt-3 flex items-center justify-center gap-1.5 text-center text-[9px] leading-4 text-zinc-600",children:[a.jsx(Q,{"data-loc":"client/src/components/football/FootballAiReadinessRanking.tsx:64",className:"h-3 w-3"})," ไม่มี Probability บนหน้า Home · ไม่รับประกันผลการแข่งขัน"]})]})}const R=()=>new URLSearchParams(window.location.search);function Ea(o){return G(o)?new Intl.DateTimeFormat("th-TH",{timeZone:"Asia/Bangkok",day:"numeric",month:"short"}).format(new Date(`${o}T12:00:00+07:00`)):"–"}function Ha({date:o,today:l,setDate:s}){return a.jsxs("section",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:58","aria-label":"เลือกวันที่แข่งขัน",className:"rounded-2xl border border-white/[0.07] bg-[#0b111c]/95 p-2.5 shadow-[0_14px_38px_rgba(0,0,0,0.18)]",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:59",className:"grid grid-cols-[1fr_1.15fr_1fr] items-stretch gap-1.5",children:[a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:60",type:"button","aria-label":"ดูการแข่งขันเมื่อวาน",onClick:()=>s(U(o,-1)),className:"flex min-h-12 items-center justify-center gap-1 rounded-xl border border-white/[0.06] bg-white/[0.02] px-1.5 text-[10px] font-bold text-zinc-400 transition hover:border-amber-400/20 hover:text-white active:scale-[0.97]",children:[a.jsx(Ta,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:60",className:"h-4 w-4"})," เมื่อวาน"]}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:61",type:"button",onClick:()=>s(l),"aria-label":"กลับมาวันนี้",className:"min-h-12 rounded-xl border border-amber-400/25 bg-amber-400/[0.07] px-2 text-center transition active:scale-[0.97]",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:62",className:"block text-[9px] font-bold text-amber-300",children:o===l?"วันนี้":"วันที่เลือก"}),a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:63",className:"mt-0.5 block text-[12px] font-black text-white",children:Ea(o)})]}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:65",type:"button","aria-label":"ดูการแข่งขันพรุ่งนี้",onClick:()=>
1s(U(o,1)),className:"flex min-h-12 items-center justify-center gap-1 rounded-xl border border-white/[0.06] bg-white/[0.02] px-1.5 text-[10px] font-bold text-zinc-400 transition hover:border-amber-400/20 hover:text-white active:scale-[0.97]",children:["พรุ่งนี้ ",a.jsx(Pa,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:65",className:"h-4 w-4"})]})]}),a.jsxs("label",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:67",className:"relative mt-2 flex min-h-10 cursor-pointer items-center justify-center gap-2 rounded-xl border border-white/[0.06] bg-black/10 text-[10px] font-semibold text-zinc-400 transition hover:border-amber-400/20 hover:text-amber-200",children:[a.jsx(da,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:68",className:"h-4 w-4 text-amber-300"})," เลือกวันที่อื่น · Asia/Bangkok",a.jsx(na,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:69",type:"date",value:o,onChange:i=>{const d=i.currentTarget.value;G(d)&&s(d)},"aria-label":"เลือกวันที่แข่งขัน",className:"absolute inset-0 h-full w-full cursor-pointer opacity-0"})]})]})}function C({active:o,label:l,count:s,live:i,onClick:d}){return a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:86",type:"button","aria-pressed":o,onClick:d,className:`flex min-h-10 shrink-0 items-center gap-1.5 rounded-full border px-3 text-[10px] font-black transition active:scale-[0.97] ${o?"border-amber-400 bg-amber-400 text-zinc-950":"border-white/[0.08] bg-[#0b111c] text-zinc-400 hover:border-amber-400/25 hover:text-white"}`,children:[i&&a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:87",className:"h-1.5 w-1.5 rounded-full bg-red-500"}),l,a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:87",className:`rounded-full px-1.5 py-0.5 text-[9px] tabular-nums ${o?"bg-black/10":"bg-white/[0.05] text-zinc-500"}`,children:s})]})}function Ba(){return a.jsx("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:94","aria-label":"กำลังโหลดการแข่งขัน",className:"space-y-3",children:Array.from({length:3}).map((o,l)=>a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:96",className:"overflow-hidden rounded-2xl border border-white/[0.06] bg-[#0b111c]",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:97",className:"flex items-center gap-2 px-3 py-3",children:[a.jsx(z,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:97",className:"h-6 w-6 rounded-full"}),a.jsx(z,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:97",className:"h-3 w-36"}),a.jsx(z,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:97",className:"ml-auto h-5 w-12 rounded-full"})]}),a.jsx("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:98",className:"border-t border-white/[0.05] p-3",children:a.jsx(z,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:98",className:"h-24 rounded-xl"})})]},l))})}function Oa(o,l){if(l==="all")return!0;const s=Na(o.kickoffAt);return s===null?!1:l==="morning"?s>=5&&s<12:l==="afternoon"?s>=12&&s<18:l==="evening"?s>=18&&s<24:s>=0&&s<5}function oe(){const o=wa(),[l,s]=n.useState(()=>{const e=R().get("date");return e&&G(e)?e:o}),[i,d]=n.useState(()=>{if(R().get("tab")==="ai")return"ai";const t=R().get("status");return t==="live"||t==="upcoming"||t==="finished"?t:"all"}),[g,I]=n.useState(()=>R().get("search")?.slice(0,80)??""),[m,S]=n.useState("all"),[h,A]=n.useState(!1),[b,F]=n.useState(()=>{const e=Number(R().get("league"));return Number.isInteger(e)&&e>0?e:null}),[L,V]=n.useState("all"),[j,q]=n.useState("all"),[T,J]=n.useState(!1),[ca,ra]=n.useState({}),[,M]=sa(),ma=B.useUtils(),p=B.football.today.useQuery({date:l},{staleTime:3e4}),f=B.football.aiTodayRanking.useQuery({date:l},{staleTime:15e3}),y=p.data,c=y?.data??[],P=f.data??[],_=n.useMemo(()=>new Map(P.map(e=>[e.fixture.fixtureId,e])),[P]),v=n.useMemo(()=>({all:c.length,live:c.filter(e=>e.status.phase==="live").length,upcoming:c.filter(e=>e.status.phase==="upcoming").length,finished:c.filter(e=>e.status.phase==="finished").length,ai:P.length}),[P.length,c]),xa=n.useMemo(()=>Array.from(new Set(c.map(e=>e.country.name))).sort((e,t)=>
1e.localeCompare(t)),[c]),ba=n.useMemo(()=>Array.from(new Map(c.map(e=>[e.league.id,{id:e.league.id,name:e.league.name}])).values()).sort((e,t)=>e.name.localeCompare(t.name)),[c]),D=n.useMemo(()=>ta.map(e=>{const t=c.find(r=>e.names.includes(r.league.name)&&(e.countries.length===0||e.countries.includes(r.country.name)));return{label:e.label,leagueId:t?.league.id??null}}),[c]),W=n.useMemo(()=>new Set(D.flatMap(e=>e.leagueId===null?[]:[e.leagueId])),[D]),$=n.useMemo(()=>{const e=g.trim().toLocaleLowerCase("th");return c.filter(t=>{const r=_.get(t.fixtureId);return i!=="all"&&i!=="ai"&&t.status.phase!==i||(i==="ai"||T)&&!r||m!=="all"&&t.country.name!==m||h&&!W.has(t.league.id)||b!==null&&t.league.id!==b||!Oa(t,L)||j!=="all"&&r?.eligibility.level!==j?!1:e?[t.home.name,t.away.name,t.league.name,t.country.name].some(u=>u.toLocaleLowerCase("th").includes(e)):!0})},[_,T,m,b,c,W,h,j,g,L,i]),Z=n.useMemo(()=>{const e=new Map;for(const t of $){const r=e.get(t.country.name)??new Map,u=`${t.league.id}:${t.league.name}`;r.set(u,[...r.get(u)??[],t]),e.set(t.country.name,r)}return Array.from(e.entries()).sort(([t],[r])=>t.localeCompare(r))},[$]),ga=async()=>{await ma.football.today.fetch({date:l,force:!0}),await Promise.all([p.refetch(),f.refetch()])},X=()=>{I(""),S("all"),A(!1),F(null),V("all"),q("all"),J(!1),d("all")},Y=g.trim().length>0||m!=="all"||h||b!==null||L!=="all"||j!=="all"||T,E=y?.meta.requestedAt??null;return a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:213",className:"mx-auto w-full max-w-3xl space-y-3.5 pb-3 text-zinc-100",children:[a.jsxs("header",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:214",className:"overflow-hidden rounded-2xl border border-amber-400/20 bg-[radial-gradient(circle_at_88%_0%,rgba(245,158,11,0.14),transparent_35%),linear-gradient(145deg,#0c1422,#090d15)] px-4 py-4 shadow-[0_24px_60px_rgba(0,0,0,0.25)]",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:215",className:"flex items-start justify-between gap-3",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:216",className:"min-w-0",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:217",className:"mb-1.5 flex items-center gap-2 text-[9px] font-black uppercase tracking-[0.18em] text-amber-300",children:[a.jsx(Q,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:217",className:"h-3.5 w-3.5"})," Development Preview"]}),a.jsxs("h1",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:218",className:"flex items-center gap-2 text-[22px] font-black tracking-tight text-white",children:[a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:218","aria-hidden":!0,children:"⚽"})," ฟุตบอล"]}),a.jsx("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:219",className:"mt-1 text-[11px] leading-5 text-zinc-400",children:"ผลการแข่งขัน สถิติ และการวิเคราะห์จากข้อมูลจริง"})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",className:"flex shrink-0 flex-col gap-1.5",children:[a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",type:"button",onClick:()=>M("/admin/football-architecture"),className:"flex min-h-10 items-center justify-center gap-1.5 rounded-xl border border-sky-400/20 bg-sky-400/[0.05] px-3 text-[9px] font-bold text-sky-300 transition hover:border-sky-400/40 active:scale-[0.97]",children:[a.jsx(Sa,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",className:"h-3.5 w-3.5"})," Architecture"]}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",type:"button",onClick:()=>M("/admin/football-validation"),className:"flex min-h-10 items-center justify-center gap-1.5 rounded-xl border border-violet-400/20 bg-violet-400/[0.05] px-3 text-[9px] font-bold text-violet-300 transition hover:border-violet-400/40 active:scale-[0.97]",children:[a.jsx(Aa,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",className:"h-3.5 w-3.5"})," Validation"]}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",type:"button",onClick:()=>M("/admin/football-monitor"),className:"flex min-h-10 items-center justify-center gap-1.5 rounded-xl border border-amber-400/20 bg-amber-400/[0.05] px-3 text-[9px] font-bold text-amber-300 transition hover:border-amber-400/40 active:scale-[0.97]",children:[a.jsx(oa,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:221",className:"h-3.5 w-3.5"})," Monitor"]})]})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:223",className:"mt-3 flex items-center gap-2 border-t border-white/[0.06] pt-2.5 text-[9px] text-zinc-500",children:[a.jsx(F
1a,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:223",className:"h-3.5 w-3.5 text-amber-300"})," Asia/Bangkok ",a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:223","aria-hidden":!0,children:"·"})," ",a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:223",children:y?.cache.hit?y.cache.stale?"แสดง Cached Data ล่าสุด":"Cache HIT":"API-Football"})]})]}),a.jsx(Ha,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:226",date:l,today:o,setDate:s}),a.jsxs("nav",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:228","aria-label":"สถานะการแข่งขัน",className:"flex snap-x gap-1.5 overflow-x-auto pb-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[a.jsx(C,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:229",active:i==="all",label:"ทั้งหมด",count:v.all,onClick:()=>d("all")}),a.jsx(C,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:230",active:i==="live",label:"LIVE",count:v.live,live:!0,onClick:()=>d("live")}),a.jsx(C,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:231",active:i==="upcoming",label:"ยังไม่เริ่ม",count:v.upcoming,onClick:()=>d("upcoming")}),a.jsx(C,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:232",active:i==="finished",label:"จบแล้ว",count:v.finished,onClick:()=>d("finished")}),a.jsx(C,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:233",active:i==="ai",label:"AI พร้อมวิเคราะห์",count:v.ai,onClick:()=>d("ai")})]}),a.jsxs("section",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:236","aria-label":"ค้นหาและตัวกรองฟุตบอล",className:"space-y-2.5 rounded-2xl border border-white/[0.07] bg-[#0b111c]/95 p-3 shadow-[0_14px_38px_rgba(0,0,0,0.18)]",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:237",className:"relative",children:[a.jsx(La,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:237",className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-zinc-600"}),a.jsx(na,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:237",value:g,onChange:e=>I(e.target.value),placeholder:"ค้นหาทีม หรือลีก...","aria-label":"ค้นหาทีม ลีก หรือประเทศ",className:"min-h-11 rounded-xl border-white/[0.08] bg-black/15 pl-9 text-[11px] placeholder:text-zinc-600"})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:238",className:"flex items-center gap-2 overflow-x-auto pb-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:239",type:"button",onClick:()=>{A(!1),F(null)},className:`min-h-9 shrink-0 rounded-full border px-3 text-[9px] font-bold transition ${!h&&b===null?"border-amber-400/35 bg-amber-400/10 text-amber-300":"border-white/[0.08] text-zinc-500"}`,children:"ทุกลีก"}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:240",type:"button",onClick:()=>{A(!0),F(null)},className:`flex min-h-9 shrink-0 items-center gap-1.5 rounded-full border px-3 text-[9px] font-bold transition ${h?"border-amber-400/35 bg-amber-400/10 text-amber-300":"border-white/[0.08] text-zinc-500"}`,children:[a.jsx(Ma,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:240",className:"h-3 w-3"})," ยอดนิยม"]}),D.map(e=>a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:241",type:"button",disabled:e.leagueId===null,onClick:()=>{e.leagueId!==null&&(A(!1),F(e.leagueId))},className:`min-h-9 shrink-0 rounded-full border px-3 text-[9px] font-bold transition ${!h&&b===e.leagueId&&e.leagueId!==null?"border-amber-400/35 bg-amber-400/10 text-amber-300":"border-white/[0.08] text-zinc-500 disabled:opacity-30"}`,children:e.label},e.label))]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:243",className:"grid grid-cols-2 gap-2",children:[a.jsxs("label",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:244",className:"min-w-0 text-[9px] font-bold uppercase tracking-wide text-zinc-600",children:["ประเทศ",a.jsxs("select",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:244",value:m,onChange:e=>S(e.target.value),className:"mt-1 min-h-10 w-full rounded-xl border border-white/[0.08] bg-[#080d16] px-2 text-[10px] font-semibold normal-case tracking-normal text-zinc-300",children:[a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:244",value:"all",children:"ทุกประเทศ"}),xa.map(e=>a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:244",value:e,children:e},e))]})]}),a.jsxs("label",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:245",className:"min-w-0 text-[9px] font-bold uppercase tracking-wide text-zinc-600",children:["ลีก",a.jsxs("select",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:245",value:b??"all",onChange:e=>{A(!1),F(e.target.value==="all"?null:Number(e.target.value))},className:"mt-1 min-h-10 w-full rounded-xl border border-white/[0.08] bg-[#080d16] px-2 text-[10px] font-semibold normal-case tracking-normal text-zinc-300",children:[a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:245",value:"all",children:"ทุกลีก"}),ba.map(e=>a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:245",value:e.id,children:e.name},e.id))]})]}),a.jsxs("label",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",className:"min-w-0 text-[9px] font-bold uppercase tracking-wide text-zinc-600",children:["เวลา",a.jsxs("select",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:L,onChange:e=>V(e.target.value),className:"mt-1 min-h-10 w-full rounded-xl border border-white/[0.08] bg-[#080d16] px-2 text-[10px] font-semibold normal-case tracking-normal text-zinc-300",children:[a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:"all",children:"ทุกช่วงเวลา"}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:"morning",children:"เช้า 05–11 น."}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:"afternoon",children:"บ่าย 12–17 น."}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:"evening",children:"เย็น 18–23 น."}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:246",value:"night",children:"ดึก 00–04 น."})]})]}),a.jsxs("label",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:247",className:"min-w-0 text-[9px] font-bold uppercase tracking-wide text-zinc-600",children:["Data Quality",a.jsxs("select",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:247",value:j,onChange:e=>q(e.target.value),className:"mt-1 min-h-10 w-full rounded-xl border border-white/[0.08] bg-[#080d16] px-2 text-[10px] font-semibold normal-case tracking-normal text-zinc-300",children:[a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:247",value:"all",children:"ทุกระดับข้อมูล"}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:247",value:"high",children:"HIGH DATA"}),a.jsx("option",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:247",value:"medium",children:"MEDIUM DATA"})]})]})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:249",className:"flex flex-wrap items-center justify-between gap-2 border-t border-white/[0.05] pt-2",children:[a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:250",type:"button","aria-pressed":T,onClick:()=>J(e=>!e),className:`flex min-h-10 items-center gap-1.5 rounded-xl border px-3 text-[9px] font-black transition active:scale-[0.97] ${T?"border-amber-400/35 bg-amber-400/10 text-amber-300":"border-white/[0.08] text-zinc-500"}`,children:[a.jsx(ja,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:250",className:"h-3.5 w-3.5"})," เฉพาะ AI พร้อมวิเคราะห์"]}),Y&&a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:251",type:"button",onClick:X,className:"min-h-10 rounded-xl px-3 text-[9px] font-bold text-zinc-500 hover:text-white",children:"ล้างตัวกรอง"})]})]}),y?.cache.stale&&a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:256",role:"status",className:"rounded-xl border border-amber-400/20 bg-amber-400/[0.05] p-3 text-[10px] leading-5 text-amber-100",children:["กำลังแสดง Cached Data ล่าสุด · ข้อมูลล่าสุดเมื่อ ",O(E)," น."]}),a.jsx($a,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:259",date:l,records:P,isLoading:f.isLoading,isRefreshing:f.isFetching,hasError:!!f.error,onRefresh:()=>{f.refetch()}}),a.jsxs("section",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:261","aria-labelledby":"football-today-heading",className:"space-y-3",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:262",className:"flex items-end justify-between gap-3 px-1",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:263",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:263",className:"flex items-center gap-1.5 text-[9px] font-black uppercase tracking-[0.16em] text-amber-300",children:[a.jsx(ea,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:263",className:"h-3.5 w-3.5"})," Match Center"]}),a.jsx("h2",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:263",id:"football-today-heading",className:"mt-1 text-lg font-black tracking-tight text-white",children:"การแข่งขันวันนี้"})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:264",className:"text-right",children:[a.jsxs("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:264",className:"text-[10px] font-bold tabular-nums text-zinc-300",children:[$.length.toLocaleStr
1ing()," คู่"]}),a.jsxs("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:264",className:"mt-0.5 text-[9px] text-zinc-600",children:["อัปเดตล่าสุด ",O(E)," น."]})]})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:267",className:"flex items-center justify-between rounded-xl border border-white/[0.06] bg-[#0b111c]/80 px-3 py-2",children:[a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:268",className:"flex items-center gap-1.5 text-[9px] text-zinc-500",children:[a.jsx(_a,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:268",className:"h-3.5 w-3.5"})," แสดงตามประเทศและลีก"]}),a.jsxs("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:269",type:"button",onClick:ga,disabled:p.isFetching,className:"flex min-h-9 items-center gap-1.5 rounded-lg px-2 text-[9px] font-bold text-amber-300 transition active:scale-[0.97] disabled:opacity-50",children:[a.jsx(ia,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:269",className:`h-3.5 w-3.5 ${p.isFetching?"motion-safe:animate-spin":""}`})," อัปเดตข้อมูลจริง"]})]}),p.isLoading?a.jsx(Ba,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:272"}):p.error?a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:273",role:"alert",className:"rounded-2xl border border-red-500/20 bg-red-500/[0.05] px-5 py-9 text-center",children:[a.jsx(Da,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:274",className:"mx-auto h-7 w-7 text-red-300"}),a.jsx("h3",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:275",className:"mt-2 text-sm font-black text-red-100",children:"ไม่สามารถโหลดข้อมูลได้ในขณะนี้"}),a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:276",type:"button",onClick:()=>p.refetch(),className:"mt-3 min-h-10 rounded-xl border border-red-400/20 px-4 text-[10px] font-bold text-red-200",children:"ลองอีกครั้ง"})]}):Z.length===0?a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:279",className:"rounded-2xl border border-dashed border-white/10 bg-[#0b111c]/70 px-5 py-10 text-center",children:[a.jsx(da,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:280",className:"mx-auto h-8 w-8 text-zinc-600"}),a.jsx("h3",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:281",className:"mt-3 text-sm font-black text-white",children:"วันนี้ยังไม่มีการแข่งขันในรายการที่เลือก"}),a.jsx("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:282",className:"mt-1 text-[10px] leading-5 text-zinc-500",children:"ระบบไม่สร้างการแข่งขันทดแทน หากมีตัวกรองอยู่สามารถล้างตัวกรองหรือดูวันถัดไปได้"}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:283",className:"mt-3 flex justify-center gap-2",children:[Y&&a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:283",type:"button",onClick:X,className:"min-h-10 rounded-xl border border-white/10 px-3 text-[10px] font-bold text-zinc-300",children:"ล้างตัวกรอง"}),a.jsx("button",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:283",type:"button",onClick:()=>s(U(l,1)),className:"min-h-10 rounded-xl bg-amber-400 px-3 text-[10px] font-black text-zinc-950",children:"ดูการแข่งขันวันพรุ่งนี้"})]})]}):Z.map(([e,t],r)=>{const u=Array.from(t.values())[0]?.[0],pa=Array.from(t.values()).reduce((w,N)=>w+N.length,0);return a.jsxs("section",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:289",className:"space-y-2.5",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:290",className:"flex items-center gap-2 px-1 pt-1",children:[u?.country.flag?a.jsx("img",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:291",src:u.country.flag,alt:`ธง ${e}`,className:"h-4 w-5 rounded-sm object-cover",loading:"lazy",referrerPolicy:"no-referrer"}):a.jsx("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:291","aria-hidden":!0,
1className:"text-sm",children:"⚽"}),a.jsx("h3",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:292",className:"min-w-0 truncate text-[13px] font-black text-white",children:e}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:293",className:"ml-auto rounded-full border border-white/[0.07] px-2 py-1 text-[9px] font-bold text-zinc-500",children:[pa," คู่"]})]}),Array.from(t.entries()).map(([w,N],ua)=>{const k=N[0]?.league;if(!k)return null;const ha=ta.some(x=>x.names.includes(k.name))||r===0&&ua<2||b===k.id,K=ca[w]??ha;return a.jsx(Ca,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:302",leagueName:k.name,leagueLogo:k.logo,matchCount:N.length,expanded:K,onToggle:()=>ra(x=>({...x,[w]:!K})),children:N.map(x=>{const H=_.get(x.fixtureId),fa=H?.eligibility.level==="high"||H?.eligibility.level==="medium"?H.eligibility.level:void 0,aa={match:x,aiLevel:fa,onOpen:()=>M(`/admin/football-match/${x.fixtureId}`)};return x.status.phase==="live"?a.jsx(za,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:309",...aa},x.fixtureId):a.jsx(Ia,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:309",...aa},x.fixtureId)})},w)})]},e)})]}),a.jsxs("footer",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:319",className:"space-y-1.5 py-3 text-center text-[9px] leading-4 text-zinc-600",children:[a.jsxs("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:320",className:"flex items-center justify-center gap-1.5",children:[a.jsx(ea,{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:320",className:"h-3 w-3"})," ข้อมูลจริงจาก API-Football · ไม่มีการสร้าง Match ทดแทน"]}),a.jsxs("p",{"data-loc":"client/src/pages/admin/AdminFootballTodayPage.tsx:321",children:[y?.cache.stale?`ข้อมูลล่าสุดเมื่อ ${O(E)} น.`:`${la.NS} / LIVE / ${la.FT}`," · ไม่มี aggressive polling"]})]})]})}export{oe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.