สารบัญคู่มือ
สำหรับครู

บันทึกคะแนน

หน้านี้คือ หัวใจของระบบ — ตารางกริดที่ rows คือนักเรียนและ cols คือ หัวข้อประเมิน ครูกรอกคะแนนตรงๆ ใน input แต่ละช่อง ระบบมี keyboard navigation เต็มรูปแบบ, ตรวจคะแนนเกินอัตโนมัติ, และให้แนบหมายเหตุต่อช่องได้ ข้อสำคัญ: ต้องกด บันทึก เองหลังกรอก ระบบไม่ auto-save

ก่อนเปิดหน้านี้ — ต้องมีนักเรียน + วิชา

ถ้าขาดอย่างใดอย่างหนึ่ง ระบบจะขึ้น StepEmptyState แทนตาราง

หน้าตา Empty State

ถ้าห้องที่เปิดยัง ไม่มีนักเรียน หรือ ไม่มีวิชา — ระบบจะขึ้น StepEmptyState 2 ขั้น บอกครูว่าต้องไปทำอะไรก่อน:

หน้า scores ตอนยังไม่มีนักเรียนหรือยังไม่มีวิชา — StepEmptyState 2 step
รูปที่ 1 StepEmptyState ขึ้นเมื่อยังขาด prerequisite

ตารางคะแนน (Score Grid)

โครงสร้างกริด + sticky headers + แถวรวม / คอลัมน์รวม

โครงสร้างของตาราง

  • คอลัมน์ซ้ายสุด — เลขที่ + ชื่อนักเรียน (sticky — คงเห็นตอน scroll ขวา)
  • คอลัมน์กลาง — หัวข้อประเมินแต่ละหัวข้อ (เรียงตามที่ตั้งไว้ในหน้า subjects) — header มี 2 บรรทัด: ชื่อหัวข้อ และ "เต็ม [maxScore]"
  • คอลัมน์ขวาสุด — รวมคะแนนของนักเรียนคนนั้น X / totalMax (sticky)
  • แถวล่างสุด — ค่าเฉลี่ย/รวมของแต่ละหัวข้อ
ตารางคะแนน 10 นักเรียน × 5 วิชา มี sticky header และ total column
รูปที่ 2 ตารางคะแนน 10 นักเรียน × 5 วิชา

หน้าจอมือถือ — สลับเป็นการ์ดต่อนักเรียน

บนหน้าจอ ≤720px ตารางจะ switch อัตโนมัติ เป็น MobileScoreView: การ์ด 1 ใบต่อนักเรียน 1 คน scroll แนวตั้ง ภายในการ์ดมี input คะแนนของทุกหัวข้อ

ฟีเจอร์ทุกอย่างยังครบ (input, note, overflow detection) — แค่ layout เปลี่ยน

หน้า scores บนมือถือ แสดงเป็นการ์ดต่อนักเรียน 1 ใบ ไม่ใช่ตาราง
รูปที่ 3 หน้า scores บน mobile

กรอกคะแนน — Input + Keyboard Navigation

ทำได้เร็วมากด้วย arrow keys + Tab + Esc โดยไม่ต้องสลับมาใช้ mouse

คลิกที่ cell แล้วพิมพ์คะแนน

คลิก/แตะ cell เลือกได้ทันที — เมื่อ focus ระบบ select all ตัวเลขเดิม (ถ้ามี) ทำให้พิมพ์ทับได้เลยโดยไม่ต้องลบเก่าก่อน

Input ยอมเฉพาะตัวเลข ≥ 0 ถึง maxScore ของหัวข้อนั้น (step=1 — แต่ใส่ทศนิยมได้ ถ้าจำเป็น)

Keyboard Navigation ภายในกริด

  • / — ขึ้น/ลงระหว่างนักเรียน (คอลัมน์เดียวกัน)
  • / — ซ้าย/ขวาระหว่างหัวข้อ (นักเรียนเดียวกัน)
  • Tab — ไปช่องถัดไป (จาก ซ้าย→ขวา, ลงแถวใหม่)
  • Shift+Tab — ย้อนกลับช่องก่อน
  • Esc — รีเซ็ตค่าใน cell กลับเป็นค่าเริ่มต้น (ก่อนแก้)
  • Enter — submit form (ถ้ามี dirty changes) — เหมือนกดปุ่ม "บันทึก"

สถานะของ Cell (สีและขอบ)

ระบบใช้ visual cue เพื่อบอกว่า cell ไหนแก้แล้ว/เกินคะแนน/มีหมายเหตุ

Dirty — ขอบหนาเข้ม

Cell ที่ครูเพิ่งแก้ค่า (และยังไม่บันทึก) จะมี ขอบหนา + ดำเข้ม เพื่อให้เห็นชัดว่าตรงไหนเป็นการเปลี่ยนแปลงที่ยัง pending

หลังกด "บันทึกคะแนน" สำเร็จ ขอบจะกลับเป็นปกติ

ช่องคะแนนที่ถูกแก้แต่ยังไม่บันทึก — border หนาเข้ม
รูปที่ 4 Cell dirty (แก้แล้วยังไม่บันทึก)

Overflow — พื้นชมพู (เกินคะแนนเต็ม)

ถ้าใส่ค่า > maxScore — cell จะ กลายเป็นพื้นชมพู ทันที (ตรวจตอน blur ไม่ใช่ real-time ตอนพิมพ์)

ระบบ ห้ามบันทึก ตราบใดที่ยังมี cell ที่ overflow อยู่ — กดปุ่มบันทึกจะได้ Toast แดง: "คะแนนเกินคะแนนเต็ม แก้ไขช่องที่เป็นสีชมพูก่อน"

ช่องคะแนนที่ใส่เกินคะแนนเต็ม — พื้นหลังสีชมพู + tooltip เตือน
รูปที่ 5 Cell overflow — พื้นชมพู

Deleted — ล้างค่าด้วย Esc หรือลบเลขให้ว่าง

ถ้าครูล้างค่าใน cell ที่เคยมีคะแนน (กด Esc หรือลบเลขจนช่องว่าง) ระบบจะ track ว่า "จะลบ" ค่านี้ตอน submit — cell จะมี style ขีดทับเล็กๆ

หลังบันทึก ค่าใน DB ของ cell นั้นจะกลายเป็น null (ไม่มีคะแนน — ต่างกับ 0)

หมายเหตุต่อช่อง (Cell Notes)

แนบข้อความสั้นต่อแต่ละ cell — เก็บความเห็นครู/บริบทของคะแนนนั้น

คลิกไอคอน bookmark ใน cell

เมื่อ cell มีคะแนนแล้ว (≥0, ไม่ใช่ deleted) จะมีไอคอน bookmark เล็กๆ ปรากฏที่มุม cell — สีตัน = มีหมายเหตุแล้ว, ขอบเปล่า = ยังไม่มี

คลิกเพื่อเปิด NoteDialog

กรอก/แก้/ลบหมายเหตุ

Dialog แสดงหัวเรื่อง: "หมายเหตุ: [ชื่อนักเรียน] — [หัวข้อ] ([คะแนน]/[เต็ม])"

มี textarea เปล่า (ถ้าใหม่) หรือมีค่าเดิม (ถ้าแก้) + 3 ปุ่ม:

  • บันทึก — เก็บข้อความ + ปิด dialog
  • ลบหมายเหตุ — เคลียร์ + ปิด
  • ยกเลิก — ไม่แก้, ปิด
Dialog หมายเหตุของช่องคะแนนหนึ่งช่อง — textarea + ปุ่มบันทึก/ลบหมายเหตุ
รูปที่ 6 NoteDialog — textarea + 3 ปุ่ม

SaveBar — สรุปการเปลี่ยนแปลง + ปุ่มบันทึก

แถบเหลืองติดล่างหน้าจอ ขึ้นเมื่อมีการแก้ — โชว์จำนวนต่อประเภท

3 chip นับแยก

SaveBar นับการเปลี่ยนแปลงเป็น 3 ประเภท:

  • 🟡 เปลี่ยน N รายการ — cell ที่ค่าเปลี่ยน (รวมที่แก้จาก null → ตัวเลข)
  • 💬 เพิ่ม M หมายเหตุ — หมายเหตุที่เพิ่ม/แก้/ลบ ไม่ได้แตะคะแนน
  • 🗑️ ลบ L รายการ — cell ที่เปลี่ยนจากตัวเลข → null

ปุ่ม บันทึกคะแนน สีเข้มอยู่ทางขวาของแถบ

SaveBar ติดด้านล่างหน้าจอ แสดงจำนวนการเปลี่ยนแปลง + ปุ่มบันทึก
รูปที่ 7 SaveBar 3 chip + ปุ่มบันทึก

กดบันทึก — รวบทุกการแก้ส่งครั้งเดียว

ระบบส่ง batch ขึ้น backend ในรอบเดียว — ไม่ใช่ส่งทีละ cell

Toast เขียวสำเร็จ: "บันทึกคะแนนแล้ว · อัปเดต X · ลบ Y" (ส่วน X/Y มีเฉพาะถ้ามีจริง)

Toast แดงผิดพลาด: "บันทึกไม่สำเร็จ" + รายละเอียด — UI ยังคงค่า dirty ไว้ ให้ครูแก้และลองใหม่

Toast เขียวขึ้นหลังบันทึกคะแนนสำเร็จ
รูปที่ 8 Toast เขียวหลังบันทึกสำเร็จ

สรุป Cheat Sheet

การเคลื่อนที่
  • Tab ช่องถัดไป
  • ↑↓←→ ทิศทาง
  • Enter = บันทึก
  • Esc รีเซ็ต cell
สถานะ Cell
  • ขอบหนา = dirty
  • พื้นชมพู = เกินคะแนน
  • ขีดทับ = จะลบ
  • ไอคอน 📑 = มีหมายเหตุ
ก่อนปิดหน้า
  • ตรวจ SaveBar ขึ้นไหม
  • กด บันทึก
  • รอ toast เขียว
  • ค่อยปิดได้

เข้าสู่ระบบ

ยินดีต้อนรับกลับมา

ใส่อีเมลและรหัสผ่านที่ได้รับจากผู้ดูแลระบบ

ยังไม่มีบัญชี? ลงทะเบียนขอใช้งาน แล้วรอผู้ดูแลอนุมัติ

เชื่อมต่อ LINE

รับการแจ้งเตือนผ่าน LINE OA

DoGrade จะส่งคะแนน/การบ้าน/อัปเดตสำคัญผ่าน LINE OA
ผูกครั้งเดียว ไม่ต้องคอยเช็คเว็บ

  • ทราบทันทีที่ครูประกาศคะแนน
  • เตือน deadline การบ้านล่วงหน้า
  • ครูคอมเมนต์ส่งงาน → ได้ noti