Skip to content

karnhao/haosj

Repository files navigation

Haosj (HaoSubject)

โดย สิทธิภัทท์ เทพสุธา ที่ชอบกระต่าย🐇มากๆ

ติดตั้ง

npm i haosj

เกี่ยวกับ HaoSubject

ระบบนี้จะอ่านข้อมูลวิชาแบบนี้ แล้วคำนวนสิ่งต่างๆให้เลย ทำให้เขียนโปรแกรมง่ายขึ้นเพียงแค่เรียกใช้ฟังก์ชันและ method ที่มีอยู่แล้ว

ตัวอย่างการใช้งาน :

import haosj from "haosj";

//ให้ c คือห้องเรียนที่โหลดข้อมูลดิบจากที่อยู่ตัวอย่าง
let c = await haosj.useExampleUrlData();

//ใช้ subject คือวิชาในวันจันทร์คาบที่ 4
let subject = c.get(1).getSubject(3);

//แสดงชื่อและห้องเรียนของวิชา
console.log(subject.getName());
console.log(subject.getRoomId());

ตัวอย่างการสร้างห้องเรียนจาก object :

//สร้างห้องเรียนจาก object
let c = haosj.getClassByObj({
    classId: "c72610",
    className: "ม.6/10 รุ่น 72 โรงเรียนสารวิทยา",
    nullSubject: {
        name: "❌ไม่มี"
    },
    subjectDays: {
        _1: {
            startTime: 500,
            subjectList: [
                {
                    name: "Math",
                    width: 50
                },
                {
                    name: "Physic",
                    width: 100
                }
            ]
        }
    }
});

Property อำนวยความสะดวก

Property อำนวยความสะดวกที่อยู่ในห้องเรียน(ต้อง update ด้วย)มีดังนี้ :

  • currentDate - วันปัจจุบัน
  • currentDay - วันที่เป็นเลข 0 ถึง 6 โดย 0 คือวันอาทิตย์ 1 คือวันจันทร์ ... 6 คือวันเสาร์
  • currentMinutes - เวลาที่เป็นนาทีนับตั้งแต่ 00:00 นาฬิกาจนถึงปัจจุบัน
  • currentSubjectDay - วัตถุที่บรรจุรายวิชาในวันนั้นๆในวันปัจจุบัน
  • currentPariod - คาบปัจจุบัน
  • currentSubject - วิชาปัจจุบัน

สำคัญ

คุณจำเป็นจะต้อง update ข้อมูลให้กับห้องเรียนก่อน ระบบจะได้ update property ที่อำนวยความสะดวกให้ได้:

update(yourBoolean?, subject_data?);

yourBoolean เป็นประพจน์ที่จะใส่หรือไม่ใส่ก็ได้ เท็จเป็นค่าเริ่มต้น ถ้าเป็นจริงระบบจะ console log รายละเอียดในฟังก์ชันนี้มา และ subject_data คือข้อมูลวิชาดิบแบบ json ถ้าใส่ไปห้องเรียนจะไปใช้ข้อมูลใหม่ที่ใส่มา, ถ้าไม่ใส่ก็จะยังใช้ข้อมูลเดิมแต่ property ต่างๆก็จะถูก update. ฟังก์ชันนี้จะเรียกใช้ ClassData.setData(...) โดยอัตโนมัติ ดังนั้นคุณไม่จำเป็นต้องใช้ ClassData.setData(...) เลย แล้วคุณยังสามารถใช้ update(...) แทนการใช้ ClassData.setData(...).

ฟังก์ชันอำนวยความสะดวก

// โหลดข้อมูลวิชาแล้ว update ให้เลยอัตโนมัติ (เป็น asynchonous ฟังก์ชัน) ส่งออก Promise<ClassData>
useUrlData(url);

// โหลดข้อมูลวิชาจาก https://raw.githubusercontent.com/karnhao/HaoWidget/main/subject_data/6-10/6-10.json แล้ว update ให้เลยอัตโนมัติ (เป็น asynchonous ฟังก์ชัน) ส่งออก Promise<ClassData>
useExampleUrlData(url);

Accessing Data การเข้าถึงข้อมูลต่างๆ

Access