Crop Logo (1:1)

{{ lang === 'TH' ? 'ข้อมูลเชิงลึก' : 'Insights' }} - {{ insightType === 'participant' ? (lang === 'TH' ? 'ผู้เข้าประกวด' : 'Participants') : (lang === 'TH' ? 'ผู้บริหาร/ทีมงาน' : 'Staffs') }}

{{ lang === 'TH' ? 'ยังไม่มีข้อมูล' : 'No data available' }}

{{ lang === 'TH' ? 'ตำแหน่ง / หน้าที่' : 'Role / Position' }} {{ lang === 'TH' ? 'จำนวน' : 'Total' }}
{{ index + 1 }}
{{ stat.name }}
{{ stat.count }}

{{ lang === 'TH' ? 'นำเข้าจาก Excel (Copy & Paste)' : 'Import from Excel (Copy & Paste)' }}

{{ lang === 'TH' ? 'วิธีการนำเข้า:' : 'How to import:' }} {{ lang === 'TH' ? 'ระบบรองรับการก๊อปปี้ทั้งแบบ' : 'The system supports both' }} {{ lang === 'TH' ? '"ชื่อและนามสกุลอยู่ช่องเดียวกัน"' : '"Combined Name"' }} {{ lang === 'TH' ? 'หรือ' : 'and' }} {{ lang === 'TH' ? '"ชื่อและนามสกุลแยกคอลัมน์กัน"' : '"Separated Columns"' }}
{{ lang === 'TH' ? 'ระบบอัปเกรดใหม่! สามารถก๊อปปี้ ชื่อภาษาอังกฤษ และ เลขบัตรฯ/Passport มาพร้อมกันได้เลย' : 'Upgraded! You can now paste English Name and ID/Passport together.' }}
{{ lang === 'TH' ? 'ตัวอย่างข้อมูล (รูปแบบที่ระบบดูดได้) :' : 'Example format :' }}
{{ lang === 'TH' ? 'ลำดับ' : 'No.' }} {{ lang === 'TH' ? 'คำนำหน้า' : 'Title' }} {{ lang === 'TH' ? 'ชื่อ' : 'First Name' }} {{ lang === 'TH' ? 'นามสกุล' : 'Last Name' }} {{ lang === 'TH' ? 'เพศ' : 'Sex' }} {{ lang === 'TH' ? 'หมวดหมู่' : 'Type' }} {{ lang === 'TH' ? 'ตำแหน่ง' : 'Position' }} {{ lang === 'TH' ? 'สัญชาติ' : 'Nation' }}
1 นาย สมชาย ใจดี {{ lang === 'TH' ? '(อัตโนมัติ)' : '(Auto)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }}
2 นางสาว สมหญิง รักเรียน {{ lang === 'TH' ? '(อัตโนมัติ)' : '(Auto)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }} {{ lang === 'TH' ? '(เลือกในเว็บ)' : '(Select in web)' }}
{{ lang === 'TH' ? 'ช่องสีส้ม ให้พิมพ์คำว่า (อัตโนมัติ) หรือ (เลือกในเว็บ) ค้างไว้ได้เลยครับ ระบบจะข้ามช่องเหล่านี้ให้อัตโนมัติ' : 'Leave orange columns with instructional text. The system will ignore them.' }}

{{ lang === 'TH' ? 'จัดตัวผู้เล่น' : 'Assign Participants' }}

{{ lang === 'TH' ? 'เลือกรายชื่อสมาชิกเพื่อลงประกวดในรายการ' : 'Select members for entry:' }} {{ team.participants[assigningPartIndex]?.category || 'Entry' }} ({{ team.participants[assigningPartIndex]?.eventZone }})

{{ lang === 'TH' ? 'ยังไม่มีรายชื่อใน Master Roster' : 'No members in Master Roster' }}

{{ lang === 'TH' ? 'ทีมงานและผู้บริหารไม่ต้องจัดประเภท ระบบจะจัดการออกเกียรติบัตรให้ทุกรายการอัตโนมัติ' : 'Staff members do not need to be assigned. Certificates will be issued for all categories automatically.' }}
{{ lang === 'TH' ? 'กรณีมีรายชื่อซ้ำ (เนื่องจากเล่นหลายตำแหน่ง) โปรดติ๊กเลือกเฉพาะตำแหน่งที่ใช้ประกวดในรายการนี้เท่านั้น เพื่อให้ตำแหน่งบนเกียรติบัตรถูกต้อง' : 'If a member appears multiple times (due to different roles), please check ONLY the role used for this specific entry to ensure accurate certificates.' }}
{{ lang === 'TH' ? 'เลือกแล้ว' : 'Selected' }}: {{ tempAssignList.length }} / {{ masterRoster.filter(m => m.memberType === 'participant' || (!m.memberType && m.partRole)).length }}
{{ group.displayName }}
{{ group.gender }}
{{ group.members.length }} ตำแหน่ง
MBAT Logo

{{ t.portalTitle }}

{{ t.portalSubtitle }}

{{ ev.name }}
{{ loginData.folder }} • {{ tempTeamData?.id }}
{{ loginData.folder === 'tlmc' ? (lang === 'TH' ? 'ป้องกันด้วยรหัสผ่าน' : 'Password Protected') : tempTeamData?.teamName }}

{{ t.noPassWarn1 }} {{ t.noPassWarn2 }} {{ t.noPassWarn3 }}
{{ t.otpSent }}
{{ emailMasked }}
Event Logo
Team Logo
{{ team.teamName }}
{{ loginData.folder }} {{ team.id }}
v2026.1.2
{{ alert.message }} |
{{ lang === 'TH' ? 'ไม่มีประกาศแจ้งเตือนเพิ่มเติม' : 'No new updates' }}

กำลังเตรียมข้อมูลระบบ...

โซนประกวด:

{{ lang === 'TH' ? 'หน้าแรก / ภาพรวมระบบ' : 'Home / Overview' }}

{{ lang === 'TH' ? 'ยินดีต้อนรับเข้าสู่ระบบจัดการข้อมูลทีม กรุณาตรวจสอบสถานะและข้อมูลที่ขาดหายด้านล่าง' : 'Welcome to the Team Portal. Please check your status and missing information below.' }}

{{ lang === 'TH' ? 'สรุปรายการที่ลงประกวด' : 'Registered Entries Summary' }}

{{ lang === 'TH' ? 'ยังไม่มีรายการประกวด (กรุณาไปเพิ่มในแท็บรายละเอียดการประกวด)' : 'No entries registered yet.' }}
{{ lang === 'TH' ? 'โซนประกวด:' : 'Zone:' }} {{ zone }}
{{ p.category || 'ไม่ระบุประเภท' }}
{{ p.subCategory }} / {{ p.subClassMenu }} / {{ p.specificInstrument }}
{{ p.class }} ({{p.specialClass}})

{{ lang === 'TH' ? 'ข้อมูลพื้นฐานของวง' : 'Basic Info' }}

{{ lang === 'TH' ? 'สมบูรณ์' : 'Complete' }} {{ lang === 'TH' ? 'ขาดข้อมูล' : 'Missing' }}
{{ lang === 'TH' ? 'ข้อมูลทั่วไป, ประวัติทีม และรูปภาพ ครบถ้วนเรียบร้อย' : 'General info, history, and images are complete.' }}
{{ item }}
{{ t.security }}
{{ t.reqSetup }}{{ t.reqSetupDesc }}
{{ t.teamProfile }}
{{ t.contactInfo }}
{{ t.subTeams }}

{{ t.subTeamsDesc }}

0{{i}}
{{ t.history }}
{{ t.roster }}

{{ lang === 'TH' ? 'โปรดตรวจสอบความถูกต้อง!' : 'Please Verify Spelling!' }}

{{ lang === 'TH' ? 'รายชื่อนี้จะนำไปจัดทำเกียรติบัตร โปรดตรวจสอบตัวสะกด คำนำหน้า ชื่อ และนามสกุล ให้ถูกต้อง 100%' : 'This list will be used for certificates. Please carefully check the spelling of all titles and names.' }}

1

{{ lang === 'TH' ? 'เพิ่มรายชื่อสมาชิกทั้งหมด' : 'Add All Members' }}

{{ lang === 'TH' ? 'ใส่รายชื่อทุกคนในทีมให้ครบก่อน (รวมผู้เข้าประกวด และผู้บริหาร/ทีมงาน)' : 'Add all participants and executives/staffs here first.' }}

{{ lang === 'TH' ? 'ผู้เข้าประกวดทั้งหมด' : 'Total Participants' }}
{{ masterRoster.filter(m => m.memberType === 'participant' || (!m.memberType && m.partRole)).length }}
{{ lang === 'TH' ? 'ชาย' : 'Male' }}{{ masterRoster.filter(m => (m.memberType === 'participant' || (!m.memberType && m.partRole)) && m.gender === 'ชาย').length }}
{{ lang === 'TH' ? 'หญิง' : 'Female' }}{{ masterRoster.filter(m => (m.memberType === 'participant' || (!m.memberType && m.partRole)) && m.gender === 'หญิง').length }}
{{ lang === 'TH' ? 'ผู้บริหาร/ทีมงานทั้งหมด' : 'Total Staffs' }}
{{ masterRoster.filter(m => m.memberType === 'staff' || (!m.memberType && m.staffRole)).length }}
{{ lang === 'TH' ? 'ชาย' : 'Male' }}{{ masterRoster.filter(m => (m.memberType === 'staff' || (!m.memberType && m.staffRole)) && m.gender === 'ชาย').length }}
{{ lang === 'TH' ? 'หญิง' : 'Female' }}{{ masterRoster.filter(m => (m.memberType === 'staff' || (!m.memberType && m.staffRole)) && m.gender === 'หญิง').length }}

{{ isEditingMember ? (lang === 'TH' ? 'แก้ไขรายชื่อ' : 'Edit Member') : t.btnAddMember }}

{{ lang === 'TH' ? '*ติดต่อทีมงานหากไม่มีตัวเลือก' : '*Contact admin if no choice' }}
{{ lang === 'TH' ? 'รวม:' : 'Total:' }} {{ masterRoster.filter(m => rosterViewTab === 'participant' ? (m.memberType === 'participant' || (!m.memberType && m.partRole)) : (m.memberType === 'staff' || (!m.memberType && m.staffRole))).length }} {{ lang === 'TH' ? 'คน' : 'Persons' }}
# {{ lang === 'TH' ? 'ชื่อ-นามสกุล (ไทย)' : 'Thai Name' }} {{ lang === 'TH' ? 'ชื่อ (อังกฤษ)' : 'Eng Name' }} {{ lang === 'TH' ? 'เพศ' : 'Sex' }} {{ lang === 'TH' ? 'สัญชาติ' : 'Nation' }} {{ lang === 'TH' ? 'เลขบัตร/Passport' : 'ID/Passport' }} {{ lang === 'TH' ? 'หมวดหมู่/ตำแหน่ง' : 'Type/Position' }} {{ lang === 'TH' ? 'จัดการ' : 'Actions' }}
{{ lang === 'TH' ? 'กำลังโหลด...' : 'Loading...' }}
{{ lang === 'TH' ? 'ยังไม่มีรายชื่อ' : 'No members found' }}
{{ idx + 1 }}
{{ member.title !== 'OTHER' && member.title ? member.title.trim() : (member.customTitle || '').trim() }}{{ /^[A-Za-z\.\s]+$/.test(member.title !== 'OTHER' && member.title ? member.title : (member.customTitle || '')) ? ' ' : '' }}{{ member.firstName ? (member.firstName.trim() + ' ' + (member.lastName || '').trim()) : (member.nameThai || '').trim() }}
{{ lang === 'TH' ? 'ชื่อซ้ำ (หลายตำแหน่ง)' : 'Duplicate Name' }} {{ lang === 'TH' ? 'ขาด:' : 'Missing:' }} {{ getMissingFields(member).join(', ') }} {{ lang === 'TH' ? 'ข้อมูลครบ' : 'Complete' }}
{{ member.nameEng || '-' }}
{{ member.gender === 'ชาย' ? (lang === 'TH' ? 'ชาย' : 'Male') : (member.gender === 'หญิง' ? (lang === 'TH' ? 'หญิง' : 'Female') : member.gender) }} {{ String(member.nation).toLowerCase() === 'thai' ? (lang === 'TH' ? 'ไทย' : 'Thai') : (member.customNation || 'Other') }} {{ member.idCard || '-' }}
{{ lang === 'TH' ? 'ผู้เข้าประกวด' : 'Participant' }}{{ member.partRole || '-' }}
{{ lang === 'TH' ? 'ผู้บริหาร/ทีมงาน' : 'Executive/Staff' }}{{ member.staffRole || '-' }}
Locked
2

{{ lang === 'TH' ? 'จัดตัวผู้เล่นลงการประกวด' : 'Assign to Categories' }}

{{ lang === 'TH' ? 'ติ๊กถูกเฉพาะ "ผู้เข้าประกวด" เพื่อเลือกลงแต่ละรายการ (ผู้บริหาร/ทีมงาน จะได้รับเกียรติบัตรทุกประเภท)' : 'Check boxes to assign participants. (Executives/Staffs will receive certificates for all entries).' }}

{{ lang === 'TH' ? 'ยังไม่มีรายการประกวด' : 'No entries added yet.' }}

{{ lang === 'TH' ? 'กรุณาไปเพิ่มรายการประกวดที่แท็บ "รายละเอียดการประกวด" ก่อน' : 'Please add entries in the Entries tab first.' }}

สรุปข้อมูลรุ่นที่ลงประกวด

รายการที่แข่งจบแล้ว (Past Entries)

ตารางจัดตัวผู้เข้าประกวด

{{ lang === 'TH' ? 'รายชื่อผู้เข้าประกวด' : 'Participant Name' }} {{ lang === 'TH' ? 'เพศ' : 'Sex' }} {{ lang === 'TH' ? 'ตำแหน่ง' : 'Position' }}
{{ lang === 'TH' ? 'ยังไม่มีรายชื่อ กรุณากลับไปเพิ่มรายชื่อใน Step 1' : 'No members. Please add in Step 1.' }}
{{ idx + 1 }}.
{{ (member.title !== 'OTHER' && member.title ? member.title.trim() : (member.customTitle || '').trim()) }}{{ /^[A-Za-z\.\s]+$/.test(member.title !== 'OTHER' && member.title ? member.title : (member.customTitle || '')) && (member.title || member.customTitle) ? ' ' : '' }}{{ member.firstName ? ((member.firstName || '').replace(/\s+/g, ' ').trim() + (member.lastName ? ' ' + (member.lastName || '').replace(/\s+/g, ' ').trim() : '')) : ((member.nameEng || member.nameThai || '').replace(/\s+/g, ' ').trim()) }}
{{ member.gender }} {{ member.partRole || '-' }}
{{ t.teamLogo }}

{{ t.logoGuide }}

  • {{ t.logoGuide1 }}
  • {{ t.logoGuide2 }}
  • {{ t.logoGuide3 }}
  • ระบบจะให้ตัดกรอบ (Crop) อัตราส่วน 1:1 ก่อนอัปโหลด
{{ t.gallery }}
{{ t.galleryGuide }}
PIC-{{n}}
{{ new Date().getFullYear() }} Entries {{ t.totalEntries }} {{ team.participants ? team.participants.length : 0 }}
ปิดรับสมัคร (Closed)

{{ t.noEntries }}

โปสเตอร์การแสดง
แก้ไขได้เสมอ
Entry #{{ idx + 1 }}
Fee Amount
{{ getFee(part).toLocaleString() }} {{ detectedCurrency }}

{{ t.announcer }}

{{ t.announcerDesc }}

{{ lang === 'TH' ? 'กำลังตรวจสอบและเตรียมข้อมูลสคริปต์...' : 'Preparing Script Data...' }}

{{ lang === 'TH' ? 'ไม่มีรายการประกวด กรุณาไปเพิ่มรายการที่แท็บ "รายละเอียดการประกวด"' : 'No entries found. Please add entries first.' }}
{{ t.booking }}

{{ t.loadingSchedule }}

{{ t.bookingClosed }}

{{ t.waitAdminAnnouncement }}

{{ t.notEligible }}

{{ t.notEligibleDesc }}

{{ t.allowedOnly }}

{{ lang === 'TH' ? cfg.eventName : (cfg.eventNameEn || cfg.eventName) }} ({{ lang === 'TH' ? cfg.location : (cfg.locationEn || cfg.location) }})
{{ c }}
{{ t.bookingTerms }}
  • {{ lang === 'TH' ? 'ระบบการจองเป็นแบบ เลือกก่อนมีสิทธิ์ก่อน (First-come, first-served)' : 'Booking is First-come, first-served.' }}
  • {{ lang === 'TH' ? 'สงวนสิทธิ์ 1 ทีม (แยกทีมตามประเภทการประกวด) จองได้ 1 ครั้ง ต่อ 1 กลุ่มงาน' : 'Only one reservation per team (separate teams according to competition category) is allowed per group.' }}
  • {{ lang === 'TH' ? 'สงวนสิทธิ์ 1 ทีม จองได้ 1 ครั้ง ต่อ 1 วัน เท่านั้น' : 'Only one reservation per team per day is allowed.' }}
  • {{ lang === 'TH' ? 'กรณีที่ทีมไม่มาซ้อมตามตาราง ให้ปล่อยสนามว่างไว้ ทีมอื่นไม่สามารถสวมสิทธิ์แทนได้' : 'No-shows keep the slot empty for fairness. No substitutions allowed.' }}
  • {{ lang === 'TH' ? 'โปรดเตรียมความพร้อมก่อนเวลา 30 นาที (เวลาซ้อมรวมการจัดเตรียมอุปกรณ์แล้ว)' : 'Please prepare 30 mins early. Slot duration includes setup time.' }}
  • {{ lang === 'TH' ? 'ต้องฝึกซ้อมตามประเภทที่ลงทะเบียนไว้ ในกรณีที่ได้รับสิทธิ์ลงมากกว่า 1 ประเภท ต้องซ้อมตามช่วงเวลาและประเภทที่ระบุไว้ในตารางเท่านั้น' : 'Teams must practice according to their registered categories. In cases where a team is eligible for more than one category, they must strictly adhere to the specific time slots and categories designated in the schedule.' }}
  • {{ lang === 'TH' ? 'กรุณาบริหารจัดการเวลาฝึกซ้อมด้วยตนเอง และออกจากสนามทันทีเมื่อหมดเวลา เพื่อรักษาสิทธิ์ของทีมอื่น โดยจะไม่มีเจ้าหน้าที่คอยแจ้งเตือนในพื้นที่' : 'Teams are responsible for managing their own rehearsal time. Please vacate the field immediately once your session ends to respect the schedules of other teams. There will be no staff on-site to monitor the time.' }}
{{ lang === 'TH' ? config.eventName : (config.eventNameEn || config.eventName) }} - {{ lang === 'TH' ? config.location : (config.locationEn || config.location) }} Map
{{ t.acceptedCats }} {{ c }}{{ t.someGroups }}
{{ t.remark }} {{ config.remarks }}

{{ t.bookedList }}

{{ b.bookedCategory || 'ไม่ระบุประเภท' }}

{{ formatDateToThai(b.date) }} | {{ t.timeLabel }} {{ b.timeSlot }}

{{ t.editTimeMode }}
{{ t.editingSlotFor }} {{ editingBooking.bookedCategory }} ({{ t.originalTime }}: {{ editingBooking.timeSlot }})

{{ t.bookMoreSlots }}

{{ formatDateToThai(dayData.date) }}
{{ mSlot.time }}
{{ sub.time }}
{{ t.btnBookSlot }}
{{ t.booked }}
{{ t.paused }}
{{ t.originalTime }}
{{ t.yourTeam }}
{{ sub.booking.bookedCategory.split(' (Entry')[0] }}
{{ t.bookAvailable }}
{{ t.booked }}
{{ t.paused }}

{{ t.yourQueue }}
{{ mSlot.booking.bookedCategory.split(' (Entry')[0] }}
{{ t.originalTime }}

{{ lang === 'TH' ? '(ยังสามารถกดจองได้จากตารางด้านบน)' : '(You can still book from the grid above)' }}

{{ t.allBooked }}