รายละเอียดทั้งหมด
สร้าง "ระบบบันทึกโฮมรูม" แบบ Single-Page Application (SPA) ที่สมบูรณ์ โดยมีข้อกำหนดดังนี้:
1. เทคโนโลยีหลัก:
Frontend: สร้างไฟล์เดียว homeroom_system.html ที่รวม HTML, Tailwind CSS (โหลดผ่าน CDN), และ Vanilla JavaScript ทั้งหมดไว้ด้วยกัน
Backend: สร้างไฟล์ Code.gs สำหรับ Google Apps Script เพื่อจัดการการบันทึกข้อมูล
Data Storage:
ใช้ localStorage ของเบราว์เซอร์เพื่อบันทึกข้อมูลอัตโนมัติขณะผู้ใช้พิมพ์ (กันข้อมูลหาย)
ใช้ Google Sheet เป็นฐานข้อมูลถาวรเมื่อกดปุ่ม "บันทึกข้อมูลทั้งหมด"
2. ดีไซน์และ UI/UX (ในไฟล์ .html):
Layout: ใช้ Tailwind CSS สร้าง Layout ที่เป็น Responsive
Navigation:
เมนูหลักวางไว้ด้านบน (Top Navigation Bar)
ต้องมีเมนูแบบ Hamburger/Mobile Menu สำหรับหน้าจอขนาดเล็ก
มีโลโก้ (ที่ดึงมาจากหน้าตั้งค่า) แสดงผลที่มุมบนซ้าย (Header) ก่อนชื่อระบบ
Theme: ใช้ธีมสีหลักไล่เฉดจาก #087EE1 ไปยัง #05E8BA สำหรับปุ่มและส่วนที่เน้น
โหมดการใช้งาน:
มีปุ่ม Dropdown สำหรับสลับโหมด "Admin" และ "User"
โหมด Admin: สามารถแก้ไขข้อมูลได้ทุกหน้า
โหมด User: ไม่สามารถแก้ไขข้อมูลได้ (Inputs/Buttons ถูก disabled)
การพิมพ์:
ทุกหน้า (ยกเว้นหน้าตั้งค่า) ต้องมีปุ่ม "พิมพ์" ที่มุมบนขวา
เมื่อกดพิมพ์ ให้แสดงเฉพาะเนื้อหาของฟอร์มหน้านั้นๆ ในรูปแบบที่เหมาะกับการพิมพ์ (ซ่อนเมนูและปุ่มที่ไม่เกี่ยวข้อง)
การแจ้งเตือน: ใช้ SweetAlert2 (โหลดผ่าน CDN) สำหรับแจ้งเตือน "กำลังบันทึก" และ "บันทึกสำเร็จ"
3. หน้าต่าง ๆ ของระบบ (จัดการด้วย JavaScript):
ต้องมีหน้าต่าง ๆ ดังนี้ (ใช้การซ่อน/แสดง div):
1. หน้าตั้งค่า (Settings):
ฟอร์มสำหรับกรอก: ชื่อโรงเรียน, ครูประจำชั้น (คนที่ 1), ครูประจำชั้น (คนที่ 2 - ถ้ามี), ชั้น/ห้อง, ภาคเรียน, ปีการศึกษา, URL โลโก้ (พร้อมแสดงตัวอย่าง), Google Sheet URL, และ Apps Script URL
2. หน้าปก (Cover Page):
แสดงผลตามแบบฟอร์มหน้าปก (โลโก้, ชื่อโรงเรียน, "บันทึกพฤติกรรม...", ภาคเรียน/ปี, กล่องข้อมูลครูที่ปรึกษา 2 คน, และกลุ่มงาน/ฝ่ายที่แก้ไขได้)
3. หน้าคำชี้แจง (Instructions):
กล่อง textarea ขนาดใหญ่สำหรับกรอกข้อความ
4. หน้ากิจกรรมหน้าเสาธง (Flagpole Activity):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)"
ตารางเช็คชื่อที่แสดงวันที่ (1-31) และวัน (จ-ศ) ในแต่ละสัปดาห์ของเดือนที่เลือก
สามารถ "เพิ่มนักเรียน" (Add Row) และ "ลบนักเรียน" (Delete Row) ได้
นักเรียนแต่ละคนมีช่อง select (มา, สาย, ขาด, ลา) สำหรับแต่ละวัน
มีคอลัมน์สรุป "รวมมา", "รวมสาย", "รวมขาด", "รวมลา" ท้ายแถวของนักเรียนแต่ละคน
5. หน้ากิจกรรมอื่น ๆ (Other Activities):
แสดงรายชื่อนักเรียนจากหน้า "หน้าเสาธง"
ตารางกิจกรรมที่ผู้ใช้สามารถ "เพิ่มคอลัมน์" (กิจกรรมใหม่) และ "ลบคอลัมน์" (ลบกิจกรรม) ได้
ส่วนหัวคอลัมน์มีช่องให้กรอก "วันที่" และ "ชื่อกิจกรรม"
มี Checkbox ให้นักเรียนแต่ละคนสำหรับแต่ละกิจกรรม
6. หน้าพฤติกรรมที่น่ายกย่อง (Commendable):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)" เพื่อกรองข้อมูล
ตารางสำหรับกรอก (วันที่, ชื่อ-สกุล, พฤติกรรม, รับทราบ, หมายเหตุ)
สามารถ "เพิ่มรายการ" (Add Row) และ "ลบรายการ" (Delete Row) ได้
7. หน้าพฤติกรรมที่ไม่พึงประสงค์ (Undesirable):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)" เพื่อกรองข้อมูล
ตารางสำหรับกรอก (วันที่, ชื่อ-สกุล, พฤติกรรม, การดำเนินการ, รับทราบ)
สามารถ "เพิ่มรายการ" (Add Row) และ "ลบรายการ" (Delete Row) ได้
8. หน้าพฤติกรรมที่ควรพัฒนา (Improvement):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)" เพื่อกรองข้อมูล
ตารางสำหรับกรอก (วันที่, ชื่อ-สกุล, พฤติกรรมที่ถูกตัดคะแนน, การดำเนินการ, ผู้รับรอง)
สามารถ "เพิ่มรายการ" (Add Row) และ "ลบรายการ" (Delete Row) ได้
9. หน้ารายงานพฤติกรรม (Behavior Report):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)"
ตารางแสดงรายชื่อนักเรียน
มีคอลัมน์ Checkbox สำหรับพฤติกรรมต่าง ๆ (มาสาย, หนีเรียน, ชู้สาว, ทะเลาะวิวาท, ลักขโมย, บุหรี่, สุรา, ทรงผม, การแต่งกาย, อื่นๆ)
ต้องมีแถว "รวม" (Footer Row) ที่สรุปจำนวน Checkbox ของแต่ละคอลัมน์
10. หน้าติดตาม (Follow-up):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)"
ตารางแสดงรายชื่อนักเรียน พร้อมช่องกรอก "เรื่อง/ผลการติดตาม" และ Checkbox 4 ช่อง
11. หน้าบันทึกพิเศษ (Special Notes):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)"
ตารางสำหรับกรอก (ลำดับ, วันที่, เรื่อง, ผู้บันทึก, หมายเหตุ)
สามารถ "เพิ่มรายการ" (Add Row) และ "ลบรายการ" (Delete Row) ได้
12. หน้าสรุป (Summary):
มีตัวเลือก "เดือน" และ "ปี (พ.ศ.)"
ตารางแสดงรายชื่อนักเรียน
ดึงข้อมูลจาก "กิจกรรมหน้าเสาธง" ของเดือนที่เลือก มาคำนวณ "มา", "สาย", "ขาด", "ลา", "รวม" และ "% การมาเรียน" ของนักเรียนแต่ละคน
4. Backend (ไฟล์ Code.gs):
doGet(e): ต้องมีฟังก์ชันนี้เพื่อแสดงผลไฟล์ homeroom_system.html
doPost(e): ต้องมีฟังก์ชันนี้เพื่อรับข้อมูล State ทั้งหมดจาก JavaScript
การสร้างชีต:
ชีตรายเดือน: "กิจกรรมหน้าเสาธง" และ "สรุป" ต้องถูกสร้างหรืออัปเดตในชีตที่มีชื่อตามเดือนและปีที่เลือก (เช่น กิจกรรมหน้าเสาธง มกราคม 2567)
ชีตตามภาคเรียน: "กิจกรรมอื่นๆ", "น่ายกย่อง", "ไม่พึงประสงค์", "ควรพัฒนา", "รายงานพฤติกรรม", "ติดตาม", และ "บันทึกพิเศษ" ต้องถูกสร้างหรืออัปเดตในชีตที่มีชื่อตามภาคเรียนและปีการศึกษา (เช่น กิจกรรมอื่นๆ เทอม 1_2567)
ชีตคงที่: "Settings" และ "OtherInfo" (สำหรับหน้าปก/คำชี้แจง) ให้บันทึกทับในชีตเดิมเสมอ