5.2 KiB
5.2 KiB
Training Course Dropdown Review
Summary
ปรับฟอร์ม Create/Edit Training Record ให้แสดงฟิลด์หลักสูตรเป็น dropdown ตามค่าเริ่มต้น และแสดงช่องกรอกชื่อหลักสูตรเองเฉพาะเมื่อผู้ใช้เลือก อื่น ๆ โดยยังคงบันทึก courseName ทุกครั้ง และบันทึก courseId เฉพาะกรณีเลือกจาก Course Master
Files Changed
src/features/training-records/components/training-record-form.tsxsrc/features/training-records/components/training-record-course-combobox.tsxsrc/features/training-records/schemas/training-record.ts
UI Changes
- ฟิลด์
ชื่อหลักสูตร *แสดงเป็น dropdown/select แบบเต็มความกว้าง - รายการหลักสูตรแสดงจาก Active Course Master
- ตัวเลือกสุดท้ายของ dropdown คือ
อื่น ๆ - เมื่อเลือก
อื่น ๆจะเปลี่ยนเป็น text input แบบเต็มความกว้าง
Course Dropdown Behavior
- dropdown แสดงหลักสูตร active เท่านั้น
- รูปแบบการแสดงผล:
- ถ้ามี
courseCodeใช้courseCode - courseName - ถ้าไม่มี
courseCodeใช้courseName
- ถ้ามี
- เมื่อเลือกหลักสูตรจาก master:
- ตั้งค่า
courseId - ตั้งค่า
courseName - auto-fill
organizerถ้ามี - auto-fill
hoursจากstandard_hoursถ้ามี
- ตั้งค่า
Custom Course Behavior
- เมื่อเลือก
อื่น ๆ- ซ่อน dropdown
- แสดง input
ชื่อหลักสูตรอื่น ๆ * - ตั้งค่า
courseId = null - ใช้ค่าจาก input ไปบันทึกเป็น
courseName
- มีปุ่ม
เปลี่ยนกลับไปเลือกจากหลักสูตร- ล้างชื่อหลักสูตร custom
- กลับไปแสดง dropdown
- เคลียร์
courseIdและcourseName
Edit Mode Behavior
- ถ้า record เดิมมี
courseId- เปิดมาด้วย dropdown ที่เลือกหลักสูตรเดิมไว้
- ถ้า record เดิมมี
courseId = nullและมีcourseName- เปิดมาด้วย text input ของ custom course
- แสดงชื่อหลักสูตรเดิมใน input
Validation Rules
- ถ้าไม่ได้เลือก
อื่น ๆ:- ต้องเลือกหลักสูตรจาก dropdown
- แสดงข้อความ
กรุณาเลือกหลักสูตร
- ถ้าเลือก
อื่น ๆ:- ต้องกรอกชื่อหลักสูตร
- แสดงข้อความ
กรุณากรอกชื่อหลักสูตร
- ชั่วโมงอบรมต้องมากกว่า 0
- แสดงข้อความ
กรุณาระบุจำนวนชั่วโมงอบรม
- แสดงข้อความ
Database Behavior
- บันทึก
courseNameทุกครั้ง - ถ้าเลือกจาก Course Master:
- บันทึก
courseId
- บันทึก
- ถ้าเลือก
อื่น ๆ:- บันทึก
courseId = null
- บันทึก
- ไม่มีการลบ field
courseName
Manual Test Checklist
- Create form shows course dropdown by default.
- Active Course Master records are shown in dropdown.
- "อื่น ๆ" appears as the last option.
- Selecting Course Master saves courseId and courseName.
- Selecting Course Master auto-fills provider if available.
- Selecting Course Master auto-fills hours if available.
- Selecting "อื่น ๆ" changes dropdown to text input.
- Custom course name is required when "อื่น ๆ" is selected.
- "เปลี่ยนกลับไปเลือกจากหลักสูตร" works.
- Edit existing master course shows dropdown selected.
- Edit existing custom course shows text input.
- HRD review page still shows course name correctly.
- Reports still show course name correctly.
- Mobile layout works.
Known Limitations
- งานนี้ยังใช้ query course list เดิมและดึงมาชุดเดียวสำหรับ dropdown จึงยังไม่ได้เพิ่ม pagination หรือ server-side search
- หากมีหลักสูตรเดิมที่ถูกปิดใช้งานไปแล้ว แต่ record อ้างอิงอยู่ ระบบจะยังแสดงค่าที่เคยบันทึกได้ใน edit mode ผ่าน option ที่เติมเข้ามาชั่วคราว