feat: split admin dashboard, improve match ops, and player closed-match UX
Admin: add match/player overview sub-nav; refine settlement flow and league match management UI; improve action button enabled/disabled styles; enhance logo upload and outright odds sync. API: expose matchPhase/bettingOpen for closed matches; league publish guards; settlement preview with auto score save; outright team auto-sync. Player: watermark for closed/settled states; keep match and bet details visible; remove default login credentials. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -96,6 +96,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'user.btn.save_profile': 'Simpan',
|
||||
'user.btn.confirm_deposit': 'Sahkan tambah baki',
|
||||
'user.deposit_remark_default': 'Tambah baki admin',
|
||||
'user.withdraw_remark_default': 'Pengeluaran admin',
|
||||
'user.field.account_type': 'Jenis akaun',
|
||||
'user.type.player': 'Pemain',
|
||||
'user.type.tier1_agent': 'Ejen peringkat 1',
|
||||
@@ -162,14 +163,19 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'finance.tx.deposit': 'Deposit',
|
||||
'finance.tx.withdraw': 'Pengeluaran',
|
||||
'finance.tx.request_id': 'ID permintaan',
|
||||
'finance.remark.agent_deposit': 'Deposit ejen',
|
||||
'finance.remark.agent_withdraw': 'Pengeluaran ejen',
|
||||
'finance.remark.admin_deposit': 'Deposit admin',
|
||||
'finance.remark.admin_withdraw': 'Pengeluaran admin',
|
||||
'finance.remark.initial_balance': 'Baki permulaan akaun',
|
||||
'agent.col.no_records': 'Tiada rekod',
|
||||
'agent.btn.confirm_adjust': 'Sahkan',
|
||||
'agent.field.select_user': 'Pilih pengguna',
|
||||
'agent.ph.select_user': 'Cari nama pengguna pemain',
|
||||
'agent.hint.select_user': 'Pilih akaun pemain sedia ada untuk naik taraf ke ejen peringkat 1',
|
||||
|
||||
'match.create_btn': '+ Kejohanan baharu',
|
||||
'match.create_fixture_btn': '+ Perlawanan tunggal',
|
||||
'match.create_btn': '+ Liga baharu',
|
||||
'match.create_fixture_btn': '+ Perlawanan baharu',
|
||||
'match.btn.markets': 'Pasaran',
|
||||
'match.filter.keyword_ph': 'Nama kejohanan / kod pasukan',
|
||||
'match.col.league': 'Kejohanan',
|
||||
@@ -182,6 +188,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'match.col.matchup': 'Perlawanan',
|
||||
'match.col.kickoff': 'Masa mula',
|
||||
'match.dialog.create_league': 'Kejohanan baharu',
|
||||
'match.dialog.edit_league': 'Edit kejohanan',
|
||||
'match.dialog.create_fixture': 'Perlawanan tunggal baharu',
|
||||
'match.dialog.create': 'Perlawanan tunggal baharu',
|
||||
'match.dialog.edit': 'Edit perlawanan tunggal',
|
||||
@@ -204,11 +211,17 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'match.field.away_ms': 'Pelawat (MS)',
|
||||
'match.field.featured': 'Pilihan utama',
|
||||
'match.hint.create_draft': 'Disimpan sebagai draf; kembangkan kejohanan dan terbitkan setiap perlawanan tunggal.',
|
||||
'match.hint.create_league': 'Cipta kejohanan dahulu, kemudian kembangkan untuk tambah perlawanan tunggal.',
|
||||
'match.hint.create_league': 'Kejohanan baharu tidak diterbitkan secara lalai; terbitkan untuk paparan pemain, kemudian kembangkan untuk tambah perlawanan.',
|
||||
'league.status.PUBLISHED': 'Diterbitkan',
|
||||
'league.status.UNPUBLISHED': 'Tidak diterbitkan',
|
||||
'league.btn.unpublish': 'Nyahterbit',
|
||||
'msg.league_published': 'Kejohanan diterbitkan',
|
||||
'msg.league_unpublished': 'Kejohanan dinyahterbit',
|
||||
'match.hint.edit_published': 'Diterbitkan: edit masa mula, pilihan utama, nama paparan; tertutup/selesai dikunci.',
|
||||
'match.expand_league_hint': 'Kembangkan liga untuk urus perlawanan; odds juara di tab Odds juara.',
|
||||
'match.expand_outright_hint': 'Kembangkan liga untuk sunting odds juara; pasukan perlawanan disegerakkan auto, boleh tambah pasukan belum dijadualkan.',
|
||||
'outright.odds_only_hint': 'Pasukan daripada perlawanan disegerakkan auto; boleh tambah pasukan manual dan sunting odds di sini.',
|
||||
'outright.fixture_sync_added': '{n} pasukan disegerakkan auto daripada perlawanan',
|
||||
'outright.col.teams_from_fixtures': 'Pasukan (daripada perlawanan)',
|
||||
'outright.col.teams_total': 'Pasukan odds juara',
|
||||
'outright.empty_no_teams': 'Tiada pasukan — tambah perlawanan di Konfigurasi atau klik Tambah pasukan.',
|
||||
@@ -365,6 +378,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'matchEditor.field.line_value': 'Garisan',
|
||||
'matchEditor.ph.kickoff': 'Pilih tarikh & masa mula',
|
||||
'matchEditor.group.league': 'Liga',
|
||||
'matchEditor.hint.league_readonly': 'Nama dan logo liga diselenggara dalam senarai kejohanan; paparan di sini hanya baca.',
|
||||
'matchEditor.group.home': 'Tuan rumah',
|
||||
'matchEditor.group.away': 'Pelawat',
|
||||
'matchEditor.group.schedule': 'Jadual & paparan',
|
||||
@@ -441,7 +455,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'settlement.ht_score': 'Skor separuh masa',
|
||||
'settlement.ft_score': 'Skor penuh masa',
|
||||
'settlement.record_score': 'Simpan skor',
|
||||
'settlement.preview_hint': 'Skor di atas disimpan secara automatik sebelum pratonton',
|
||||
'settlement.preview_hint': 'Isi skor dan klik pratonton — skor disimpan secara automatik',
|
||||
'settlement.preview_btn': 'Pratonton penyelesaian',
|
||||
'settlement.preview_failed': 'Gagal menjana pratonton penyelesaian',
|
||||
'settlement.err_score_not_recorded': 'Sila masukkan skor separuh masa dan penuh masa sebelum penyelesaian',
|
||||
@@ -506,6 +520,7 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'msg.deleted': 'Dipadam',
|
||||
'msg.delete_failed': 'Gagal memadam',
|
||||
'msg.league_created': 'Kejohanan dicipta',
|
||||
'msg.league_updated': 'Kejohanan dikemas kini',
|
||||
'msg.match_created_draft': 'Perlawanan tunggal dicipta (draf)',
|
||||
'msg.published': 'Diterbitkan dengan pasaran',
|
||||
'msg.closed': 'Pertaruhan ditutup',
|
||||
@@ -604,6 +619,16 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'outright.btn.add_team': 'Tambah pasukan',
|
||||
'outright.add.filter_fixture': 'Pasukan sedia ada',
|
||||
'outright.add.filter_all': 'Semua terbina dalam',
|
||||
'outright.add.filter_custom': 'Tersuai',
|
||||
'outright.add.custom_hint': 'Isi kod pasukan dan nama Cina/Inggeris; logo melalui muat naik atau URL.',
|
||||
'outright.add.field_code': 'Kod pasukan',
|
||||
'outright.add.field_logo': 'Logo',
|
||||
'outright.add.ph_code': 'cth. TEAM01',
|
||||
'outright.add.ph_name_zh': 'Nama Cina',
|
||||
'outright.add.ph_name_en': 'Nama Inggeris',
|
||||
'outright.add.err_code_required': 'Sila isi kod pasukan',
|
||||
'outright.add.err_name_required': 'Sila isi sekurang-kurangnya nama Cina atau Inggeris',
|
||||
'outright.add.err_duplicate': 'Kod pasukan ini sudah ada dalam pasaran juara',
|
||||
'outright.add.select_all': 'Pilih semua',
|
||||
'outright.add.clear_selection': 'Kosongkan pilihan',
|
||||
'outright.add.selected_count': '{n} dipilih',
|
||||
|
||||
Reference in New Issue
Block a user