diff --git a/app/citizen-frontend/README.md b/app/citizen-frontend/README.md index a89add0..830d8b1 100644 --- a/app/citizen-frontend/README.md +++ b/app/citizen-frontend/README.md @@ -1,3 +1,5 @@ +claude --resume 8ea22150-4078-44e3-9080-f2327c34aa04 + # citizen-frontend Scaffolded with Vuetify CLI. diff --git a/app/citizen-frontend/src/assets/course/schedule/friday-evening.png b/app/citizen-frontend/src/assets/course/schedule/friday-evening.png new file mode 100644 index 0000000..857af82 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/friday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/friday-morning.png b/app/citizen-frontend/src/assets/course/schedule/friday-morning.png new file mode 100644 index 0000000..0bb8841 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/friday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/friday-noon.png b/app/citizen-frontend/src/assets/course/schedule/friday-noon.png new file mode 100644 index 0000000..dc758ad Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/friday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/monday-evening.png b/app/citizen-frontend/src/assets/course/schedule/monday-evening.png new file mode 100644 index 0000000..a293c08 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/monday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/monday-morning.png b/app/citizen-frontend/src/assets/course/schedule/monday-morning.png new file mode 100644 index 0000000..4c24fec Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/monday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/monday-noon.png b/app/citizen-frontend/src/assets/course/schedule/monday-noon.png new file mode 100644 index 0000000..2509c94 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/monday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/saturday-evening.png b/app/citizen-frontend/src/assets/course/schedule/saturday-evening.png new file mode 100644 index 0000000..40b40da Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/saturday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/saturday-morning.png b/app/citizen-frontend/src/assets/course/schedule/saturday-morning.png new file mode 100644 index 0000000..a097b9d Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/saturday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/saturday-noon.png b/app/citizen-frontend/src/assets/course/schedule/saturday-noon.png new file mode 100644 index 0000000..a5c0a83 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/saturday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/sunday-evening.png b/app/citizen-frontend/src/assets/course/schedule/sunday-evening.png new file mode 100644 index 0000000..bcd6efe Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/sunday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/sunday-morning.png b/app/citizen-frontend/src/assets/course/schedule/sunday-morning.png new file mode 100644 index 0000000..ff9181f Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/sunday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/sunday-noon.png b/app/citizen-frontend/src/assets/course/schedule/sunday-noon.png new file mode 100644 index 0000000..7001773 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/sunday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/thursday-evening.png b/app/citizen-frontend/src/assets/course/schedule/thursday-evening.png new file mode 100644 index 0000000..5cb6abe Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/thursday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/thursday-morning.png b/app/citizen-frontend/src/assets/course/schedule/thursday-morning.png new file mode 100644 index 0000000..1ae39ba Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/thursday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/thursday-noon.png b/app/citizen-frontend/src/assets/course/schedule/thursday-noon.png new file mode 100644 index 0000000..d2fd6df Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/thursday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/tuesday-evening.png b/app/citizen-frontend/src/assets/course/schedule/tuesday-evening.png new file mode 100644 index 0000000..8fff4a7 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/tuesday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/tuesday-morning.png b/app/citizen-frontend/src/assets/course/schedule/tuesday-morning.png new file mode 100644 index 0000000..91fd9ac Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/tuesday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/tuesday-noon.png b/app/citizen-frontend/src/assets/course/schedule/tuesday-noon.png new file mode 100644 index 0000000..28e6aa8 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/tuesday-noon.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/wednesday-evening.png b/app/citizen-frontend/src/assets/course/schedule/wednesday-evening.png new file mode 100644 index 0000000..fbe0c9d Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/wednesday-evening.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/wednesday-morning.png b/app/citizen-frontend/src/assets/course/schedule/wednesday-morning.png new file mode 100644 index 0000000..dc0150e Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/wednesday-morning.png differ diff --git a/app/citizen-frontend/src/assets/course/schedule/wednesday-noon.png b/app/citizen-frontend/src/assets/course/schedule/wednesday-noon.png new file mode 100644 index 0000000..9df78a0 Binary files /dev/null and b/app/citizen-frontend/src/assets/course/schedule/wednesday-noon.png differ diff --git a/app/citizen-frontend/src/pages/course.vue b/app/citizen-frontend/src/pages/course.vue index 2fca4d0..8bdca1c 100644 --- a/app/citizen-frontend/src/pages/course.vue +++ b/app/citizen-frontend/src/pages/course.vue @@ -120,8 +120,17 @@ {{ DAY_NAMES[row.day - 1] }} - - {{ row[slot.key] }} + +
+ + + + + {{ row[slot.key] }} +
@@ -271,6 +280,24 @@ const SHOW_SLOT_FILTER = false const DAY_NAMES = ['一', '二', '三', '四', '五', '六', '日'] +// 課表小卡:檔名為「星期-時段」,逐一匯入 21 張圖並依 day/slot 查表取用 +const scheduleCardModules = import.meta.glob<{ default: string }>('../assets/course/schedule/*.png', { eager: true }) + +const SCHEDULE_CARD_DAY_KEYS = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'] +const SCHEDULE_CARD_SLOT_KEYS: Record = { morning: 'morning', noon: 'noon', night: 'evening' } + +const SCHEDULE_CARDS: Record = Object.fromEntries( + Object.entries(scheduleCardModules).map(([path, module]) => [ + path.replace(/^.*\/|\.png$/g, ''), + module.default, + ]), +) + +function scheduleCardImage (day: number, slot: TimeSlot): string { + const key = `${SCHEDULE_CARD_DAY_KEYS[day - 1]}-${SCHEDULE_CARD_SLOT_KEYS[slot]}` + return SCHEDULE_CARDS[key] +} + const SLOTS: { key: TimeSlot, label: string, icon: string, headerClass: string }[] = [ { key: 'morning', label: '早上', icon: 'mdi-weather-sunset-up', headerClass: 'bg-deep-orange' }, { key: 'noon', label: '中午', icon: 'mdi-white-balance-sunny', headerClass: 'bg-amber-darken-2' }, @@ -317,6 +344,17 @@ onMounted(() => { width: 22%; } +/* 課表小卡:欄寬有限,圖片改用 clamp 隨欄寬縮放,避免在手機版把文字擠出可讀範圍 */ +.slot-cell { + padding-block: 8px; +} + +.slot-avatar { + width: clamp(32px, 18vw, 56px); + height: clamp(32px, 18vw, 56px); + border: 1px solid rgba(0, 0, 0, 0.08); +} + /* 組別卡片:半透明白底圓形與次級白字,Vuetify 沒有對應的 utility class */ .group-avatar { background-color: rgba(255, 255, 255, 0.22);