feat: Rebuild as Court Manager Dashboard v2

- Complete rewrite for single Court Manager user
- Feature 1: Player Management (CRUD, ELO, skill level)
- Feature 2: Court Reservation (timeline, override)
- Feature 3: Match Event Builder (3-step wizard)
  - Step 1: Event setup with player selection + stage calculator
  - Step 2: Stage configurator (Open/Skill/RR/Tournament)
  - Step 3: Auto bracket generation
- Feature 4: Live Court View (main dashboard, 2x2 grid)
- Event Control: score entry, bracket advancement, court assignment
- Screen view: TV display per court (/screen/:id)
- Seed: 8 players, 4 courts, 1 completed + 1 active event
- Routes: / players courts events events/new events/:id screen/:id
This commit is contained in:
Nemo
2026-03-19 07:35:51 +08:00
parent e455accc7e
commit 4421f61c24
56 changed files with 2949 additions and 4209 deletions

View File

@@ -1,23 +1,16 @@
import { createRouter, createWebHistory } from 'vue-router'
import Dashboard from '../views/Dashboard.vue'
import Courts from '../views/Courts.vue'
import Matchmaking from '../views/Matchmaking.vue'
import Tournament from '../views/Tournament.vue'
import ScreenDisplay from '../views/ScreenDisplay.vue'
import Players from '../views/Players.vue'
const routes = [
{ path: '/', name: 'Dashboard', component: Dashboard },
{ path: '/courts', name: 'Courts', component: Courts },
{ path: '/matchmaking', name: 'Matchmaking', component: Matchmaking },
{ path: '/tournament', name: 'Tournament', component: Tournament },
{ path: '/players', name: 'Players', component: Players },
{ path: '/screen/:courtId', name: 'Screen', component: ScreenDisplay },
{ path: '/', component: () => import('../views/Dashboard.vue'), name: 'dashboard' },
{ path: '/players', component: () => import('../views/Players.vue'), name: 'players' },
{ path: '/courts', component: () => import('../views/Courts.vue'), name: 'courts' },
{ path: '/events', component: () => import('../views/Events.vue'), name: 'events' },
{ path: '/events/new', component: () => import('../views/EventBuilder.vue'), name: 'event-new' },
{ path: '/events/:id', component: () => import('../views/EventControl.vue'), name: 'event-detail' },
{ path: '/screen/:id', component: () => import('../views/Screen.vue'), name: 'screen' },
]
const router = createRouter({
export default createRouter({
history: createWebHistory(),
routes,
})
export default router